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; } } } }
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); } }