예제 #1
0
        public override void InitializeEditingControl(int rowIndex, object initialFormattedValue,
                                                      DataGridViewCellStyle dataGridViewCellStyle)
        {
            base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle);

            if (this.OwningColumn is DGVCustomComboBoxColumn)
            {
                DGVComboBoxEditingControl editCtrl = this.DataGridView.EditingControl as DGVComboBoxEditingControl;
                DGVCustomComboBoxColumn   column   = this.OwningColumn as DGVCustomComboBoxColumn;

                editCtrl.Items.Clear();
                editCtrl.DisplayMember = "Tag";
                editCtrl.ValueMember   = "Value";
                editCtrl.NotifyDGVCell = this.OnComboBoxSelectionChanged;
                for (int i = 0; i < column.Items.Count; i++)
                {
                    editCtrl.Items.Add(column.Items[i]);

                    if (this.Value != null && (column.Items[i] as OVRCustomComboBoxItem).Tag == this.Value.ToString())
                    {
                        editCtrl.SelectedIndex = i;
                    }
                }
            }
        }
예제 #2
0
        public static void FillDataGridView(DataGridView dgv, DataTable dt, List <int> cmbColumns = null, List <OVRCheckBoxColumn> chkColumns = null)
        {
            if (dgv == null || dt == null)
            {
                return;
            }
            if (dt.Columns.Count < 1)
            {
                return;
            }

            bool bResetColumns = false;

            if (dt.Columns.Count != dgv.Columns.Count)
            {
                bResetColumns = true;
            }
            else
            {
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    if (dgv.Columns[i].HeaderText != dt.Columns[i].ColumnName)
                    {
                        bResetColumns = true;
                        break;
                    }
                }
            }

            try
            {
                // Reset Columns
                if (bResetColumns)
                {
                    dgv.Columns.Clear();
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        DataGridViewColumn col = null;
                        bool bTextBoxCol       = true;
                        if (cmbColumns != null)
                        {
                            for (int j = 0; j < cmbColumns.Count; j++)
                            {
                                if (i == cmbColumns[j])
                                {
                                    col         = new DGVCustomComboBoxColumn();
                                    bTextBoxCol = false;
                                    break;
                                }
                            }
                        }
                        if (chkColumns != null)
                        {
                            for (int j = 0; j < chkColumns.Count; j++)
                            {
                                if (i == chkColumns[j].columnIndex)
                                {
                                    col = new DataGridViewCheckBoxColumn();
                                    (col as DataGridViewCheckBoxColumn).TrueValue  = chkColumns[j].trueValue.ToString();
                                    (col as DataGridViewCheckBoxColumn).FalseValue = chkColumns[j].falseValue.ToString();
                                    bTextBoxCol = false;
                                    break;
                                }
                            }
                        }
                        if (bTextBoxCol)
                        {
                            col          = new DataGridViewTextBoxColumn();
                            col.ReadOnly = true;
                        }
                        if (col != null)
                        {
                            col.HeaderText   = dt.Columns[i].ColumnName;
                            col.Name         = dt.Columns[i].ColumnName;
                            col.AutoSizeMode = DataGridViewAutoSizeColumnMode.NotSet;
                            col.SortMode     = DataGridViewColumnSortMode.Automatic;
                            dgv.Columns.Add(col);
                        }
                    }
                }

                List <string> listColumn = new List <string>(dt.Columns.Count);
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    listColumn.Add(dt.Columns[i].ColumnName);
                }

                // Fill DataGridView
                dgv.Rows.Clear();
                int iRowNum = 0;
                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    DataGridViewRow dr = new DataGridViewRow();
                    dr.CreateCells(dgv);
                    dr.Selected = false;
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        string strValue = dt.Rows[j][i].ToString();
                        dr.Cells[i].Value = strValue;

                        if (strValue.Length > listColumn[i].Length)
                        {
                            listColumn[i] = strValue;
                        }
                    }
                    if (dgv.RowHeadersVisible)
                    {
                        iRowNum++;
                        dr.HeaderCell.Value = iRowNum.ToString();
                    }
                    dgv.Rows.Add(dr);
                }
                if (dgv.RowHeadersVisible)
                {
                    dgv.TopLeftHeaderCell.Value = String.Format("RC: {0}", iRowNum);
                    System.Drawing.SizeF sf = dgv.CreateGraphics().MeasureString(dgv.TopLeftHeaderCell.Value.ToString(), dgv.Font);
                    dgv.RowHeadersWidth = System.Convert.ToInt32(sf.Width + 10f);
                }

                // Calculate Column Length
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    System.Drawing.SizeF sf = dgv.CreateGraphics().MeasureString(listColumn[i], dgv.Font);
                    dgv.Columns[i].Width = System.Convert.ToInt32(sf.Width + 25f);
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }