在一个DataGrid
,我有一个DataGridViewComboBoxColumn
。我在代码中分配了 aDataTable
作为 a DataSource
、 items 、 value 成员和 display 成员,但是ComboBox
当我运行程序时显示为空。下拉菜单根本不起作用。
但是,它确实正确分配了值,这表明DataSource
已正确设置。即,当我分配 value 时,它会获取正确的显示成员。
我已经根据其他相关帖子尝试过的事情 - 使用List
而不是DataTable
[ 工作原理完全相同] - 使用enum
而不是[ 工作正常 ] -通过 a
- 检查“只读” = false 在所有行、列、单元格上DataTable
使用该对象. - 作为预防措施,为特定列分配“只读”= false on function 并设置if it is 。DataTable
BindingSource
cell_enter
DataSource
null
当我DataGridViewComboBoxCell
在调试中观看 [or column] 时,我看到项目已被填充。我真的没有想法,任何帮助表示赞赏。如果有帮助,我已经粘贴了一些代码片段
DataTable data = new DataTable();
data.Columns.Add(new DataColumn("Value", typeof(string)));
data.Columns.Add(new DataColumn("Description", typeof(string)));
data.Rows.Add("en_US", "English-US");
data.Rows.Add("de", "german-Germany");
(patientGrid.Columns[5] as DataGridViewComboBoxColumn).Items.Add("English-US");
(patientGrid.Columns[5] as DataGridViewComboBoxColumn).Items.Add("german-Germany");
(patientGrid.Columns[5] as DataGridViewComboBoxColumn).ValueType = typeof(string);
(patientGrid.Columns[5] as DataGridViewComboBoxColumn).DataSource = data;
(patientGrid.Columns[5] as DataGridViewComboBoxColumn).ValueMember = "Value";
(patientGrid.Columns[5] as DataGridViewComboBoxColumn).DisplayMember = "Description";
//setting value
(patientGrid.Rows[rowIndex].Cells[5] as DataGridViewComboBoxCell).Value =
clientLanguagePreference[cmbClients.SelectedItem.ToString()];