コード例 #1
0
        public static IEnumerable <DataGridViewColumn> MakeTreeColumns(this ITreeFieldProvider provider, int fontWidth)
        {
            var fieldSetups = provider.TreeFields;
            List <DataGridViewColumn> columns = new List <DataGridViewColumn>();

            foreach (var fieldSetup in fieldSetups)
            {
                DataGridViewColumn col = null;

                if (fieldSetup.Field == "SureToMeasure")
                {
                    fieldSetup.Field = "STM";
                }

                switch (fieldSetup.Field)
                {
                case "CuttingUnit":
                {
                    continue;
                }

                case "Species":
                {
                    col = new DataGridViewComboBoxColumn()
                    {
                        DataPropertyName = nameof(Tree.TreeDefaultValue),
                        DisplayMember    = nameof(TreeDefaultValueDO.Species),
                        ValueMember      = nameof(TreeDefaultValueDO.Self),
                        FlatStyle        = FlatStyle.Flat
                    };
                    break;
                }

                case "CountOrMeasure":
                {
                    col = new DataGridViewComboBoxColumn()
                    {
                        DataSource = new string[] { "C", "M", "I" },
                        FlatStyle  = FlatStyle.Flat
                    };
                    break;
                }

                case "LiveDead":
                {
                    col = new DataGridViewComboBoxColumn()
                    {
                        DataSource = new string[] { "L", "D" },
                        FlatStyle  = FlatStyle.Flat
                    };

                    break;
                }

                case "Stratum":
                {
                    col = new DataGridViewComboBoxColumn()
                    {
                        DataPropertyName = nameof(Tree.Stratum),
                        DisplayMember    = nameof(Stratum.Code),
                        ValueMember      = nameof(Stratum.Self),
                        FlatStyle        = FlatStyle.Flat,
                        AutoSizeMode     = DataGridViewAutoSizeColumnMode.AllCells
                    };
                    if (provider is PlotStratum)
                    {
                        col = new DataGridViewTextBoxColumn()
                        {
                            DataPropertyName = nameof(Tree.Stratum),
                            ReadOnly         = true
                        };
                    }
                    break;
                }

                case "SampleGroup":
                {
                    col = new DataGridViewComboBoxColumn()
                    {
                        DataPropertyName = nameof(Tree.SampleGroup),
                        DisplayMember    = nameof(SampleGroup.Code),
                        ValueMember      = nameof(SampleGroup.Self),
                        FlatStyle        = FlatStyle.Flat
                    };
                    break;
                }

                case "KPI":
                {
                    col = MakeColumn(fieldSetup.ColumnType);
                    // col.ReadOnly = true;
                    break;
                }

                case "Initials":
                {
                    col = new DataGridViewComboBoxColumn()
                    {
                        //DataPropertyName = nameof(Tree.Initials),
                        //DisplayMember = nameof(Cruiser.Initials),
                        //ValueMember = nameof(Cruiser.Initials),
                        FlatStyle = FlatStyle.Flat
                    };
                    break;
                }

                default:
                {
                    col = MakeColumn(fieldSetup.ColumnType);
                    break;
                }
                }

                if (String.IsNullOrEmpty(col.DataPropertyName)) //see if we have already set the Mapping Name
                {
                    col.DataPropertyName = fieldSetup.Field;
                }
                col.Name = col.DataPropertyName;

                if (String.IsNullOrEmpty(col.HeaderText))
                {
                    col.HeaderText = fieldSetup.Heading;
                }

                if (!string.IsNullOrEmpty(fieldSetup.Format) && //field has format
                    (col.DefaultCellStyle == null ||            //and column doesn't have format set yet
                     string.IsNullOrEmpty(col.DefaultCellStyle.Format)))
                {
                    col.DefaultCellStyle = new DataGridViewCellStyle()
                    {
                        Format = fieldSetup.Format
                    };
                }

                if (fieldSetup.Width > 0)
                {
                    col.Width     = (int)fieldSetup.Width * fontWidth;
                    col.Resizable = DataGridViewTriState.True;
                }
                else
                {
                    col.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                    col.Resizable    = DataGridViewTriState.True;
                }

                yield return(col);
            }

            yield return(new DataGridViewButtonColumn()
            {
                Name = "Logs",
                HeaderText = "Logs",
                DataPropertyName = nameof(Tree.LogCountActual),
                AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader
            });
        }
コード例 #2
0
        public static DataGridTableStyle InitializeTreeColumns(this ITreeFieldProvider provider, EditableDataGrid grid)
        {
            DataGridTableStyle tblStyle = new System.Windows.Forms.DataGridTableStyle()
            {
                MappingName = "Tree"
            };

            int screenWidth = Screen.PrimaryScreen.WorkingArea.Width;
            int charWidth   = MeasureTextWidth(grid, "0");

            // Loop through each item in the fields list,
            // set up a column style and add it to the table style.

            foreach (TreeFieldSetupDO field in provider.TreeFields)
            {
                DataGridTextBoxColumn col;

                switch (field.Field)
                {
                case "CuttingUnit":
                {
                    continue;
                }

                case "Species":
                {
                    col = new FMSC.Controls.EditableComboBoxColumn()
                    {
                        DisplayMember = "Species",
                        //((EditableComboBoxColumn)col).ValueMember = "Self";
                        MappingName = "TreeDefaultValue",
                        Format      = "[Species]"
                    };
                    break;
                }

                case "CountOrMeasure":
                {
                    col = new FMSC.Controls.EditableComboBoxColumn()
                    {
                        //((EditableComboBoxColumn)col).DisplayMember = "CountOrMeasure";
                        //((EditableComboBoxColumn)col).ValueMember = "CountOrMeasure";
                        DataSource = new string[] { "C", "M", "I" }
                    };
                    break;
                }

                case "LiveDead":
                {
                    col = new FMSC.Controls.EditableComboBoxColumn()
                    {
                        //((EditableComboBoxColumn)col).DisplayMember = "LiveDead";
                        //((EditableComboBoxColumn)col).ValueMember = "LiveDead";
                        DataSource = new string[] { "L", "D" }
                    };
                    break;
                }

                case "Stratum":
                {
                    if (provider is PlotStratum)
                    {
                        col = new DataGridTextBoxColumn();
                    }
                    else
                    {
                        col = new FMSC.Controls.EditableComboBoxColumn()
                        {
                            DisplayMember = "Code"
                                            //((EditableComboBoxColumn)col).ValueMember = "Code";
                        };
                    }
                    break;
                }

                case "SampleGroup":
                {
                    col = new FMSC.Controls.EditableComboBoxColumn()
                    {
                        DisplayMember = "Code"
                                        //((EditableComboBoxColumn)col).ValueMember = "Code";
                    };
                    break;
                }

                case "KPI":
                {
                    col = MakeColumn(field.ColumnType);
                    //col.ReadOnly = true;
                    break;
                }

                case "Initials":
                {
                    col = new FMSC.Controls.EditableComboBoxColumn()
                    {
                        DisplayMember = "Initials",
                        ValueMember   = "Initials"
                    };
                    break;
                }

                default:    //all other columns
                {
                    col = MakeColumn(field.ColumnType);
                    break;
                }
                }

                // Set up width: autowidth or fixed width
                if (field.Width == 0.0)
                {
                    col.Width = MeasureTextWidth(grid, field.Heading.Trim()) + 18;//plus 18 to allow for padding
                }
                else
                {
                    int width1 = (int)field.Width;
                    if (width1 <= 10)
                    {
                        int width2 = (charWidth * width1) + 18;
                        col.Width = Math.Min(screenWidth, width2);
                    }
                    else
                    {
                        col.Width = Math.Min(screenWidth, width1);
                    }
                }

                if (String.IsNullOrEmpty(col.MappingName)) //see if we have already set the Mapping Name
                {
                    col.MappingName = field.Field;
                }
                if (String.IsNullOrEmpty(col.HeaderText))
                {
                    col.HeaderText = field.Heading;
                }
                if (string.IsNullOrEmpty(col.Format))
                {
                    col.Format = field.Format; // 'C' = currency, 'N' = number (E.G. "N1" means one decimal place), #0.00
                }
                col.FormatInfo = null;
                //this.myCustomColumnBase.Width = (int)myTreeFieldSetups[i].Width;
                col.NullText = String.Empty;// <- look into this

                // Add the column style to the table style
                tblStyle.GridColumnStyles.Add(col);
            }

            DataGridButtonColumn logsCol = new DataGridButtonColumn();

            logsCol.HeaderText  = "Logs";
            logsCol.MappingName = "LogCountActual";
            logsCol.Width       = MeasureTextWidth(grid, logsCol.HeaderText) + 18;//plus 18 to allow for padding
            tblStyle.GridColumnStyles.Add(logsCol);

            tblStyle.GridColumnStyles.Add(MakeErrorColumn(screenWidth));
            // Add the newly created DataGridTableStyle to the grid.
            grid.TableStyles.Add(tblStyle);

            return(tblStyle);
        }