public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle) { Debug.Print("InitializeEditingControl"); // Set the value of the editing control to the current cell value. base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle); EnumEditingControl ctl = DataGridView.EditingControl as EnumEditingControl; // Use the default row value when Value property is null. var colIdx = this.ColumnIndex; EnumColumn parent = this.OwningColumn as EnumColumn; ctl.DataSource = parent.DataSource; ctl.DisplayMember = parent.DisplayMember; ctl.ValueMember = parent.ValueMember; ctl.FlatStyle = parent.FlatStyle; if (this.Value == null) { ctl.Text = (string)this.DefaultNewRowValue; } else if (int.TryParse(this.Value.ToString(), out int i)) { ctl.SelectedIndex = i; } else { ctl.Text = this.Value.ToString(); } }
private void crtColumns() { int i = 0; foreach (var field in m_tblInfo.m_cols) { #if !use_custom_cols i = m_dataGridView.Columns.Add(field.m_field, field.m_alias); var dgvcol = m_dataGridView.Columns[i]; #else DataGridViewColumn dgvcol; if (field.m_type == TableInfo.ColInfo.ColType.dateTime) { dgvcol = new CalendarColumn(); dgvcol.SortMode = DataGridViewColumnSortMode.Automatic; } //else if (field.m_lookupTbl != null) //{ // //var cmb = new DataGridViewComboBoxColumn(); // //DataTable tbl = field.m_lookupData.m_dataSource; // //BindingSource bs = new BindingSource(); // //bs.DataSource = tbl; // //cmb.DataSource = bs; // //cmb.DisplayMember = tbl.Columns[1].ColumnName; // //cmb.AutoComplete = true; // //cmb.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing; // //cmb.FlatStyle = FlatStyle.Flat; // //dgvcol = cmb; // //dgvcol.SortMode = DataGridViewColumnSortMode.Automatic; //} else if (field.m_type == TableInfo.ColInfo.ColType.map) { //DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn(); Dictionary <string, int> dict = field.GetDict(); var dt = new DataTable(); dt.Columns.Add("name"); dt.Columns.Add("val"); for (int idx = 0; idx < dict.Count; idx++) { var newRow = dt.NewRow(); newRow[0] = dict.Keys.ElementAt(idx); newRow[1] = idx; dt.Rows.Add(newRow); } EnumColumn column = new EnumColumn(); column.DataSource = dt; column.ValueMember = "val"; column.DisplayMember = "name"; column.FlatStyle = FlatStyle.Flat; dgvcol = column; } else { dgvcol = new DataGridViewTextBoxColumn(); } i = m_dataGridView.Columns.Add(dgvcol); dgvcol.HeaderText = field.m_alias; dgvcol.Name = field.m_field; #endif //use_custom_cols dgvcol.DataPropertyName = field.m_field; switch (field.m_type) { #if format_currency case TableInfo.ColInfo.ColType.currency: dgvcol.DefaultCellStyle.Format = lConfigMng.getCurrencyFormat(); break; #endif case TableInfo.ColInfo.ColType.dateTime: dgvcol.DefaultCellStyle.Format = "dd/MM/yyyy"; dgvcol.DefaultCellStyle.NullValue = ""; break; } //show hide col dgvcol.Visible = field.m_visible; } //last columns var lastCol = m_dataGridView.Columns[i]; lastCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; lastCol.FillWeight = 1; }