在DataGrid
中,我有一个DataGridViewComboBoxColumn
。我在代码中为DataTable
,项目,值成员和显示成员分配了DataSource
,但是当我运行程序时ComboBox
显示为空。下拉列表不起作用一点都不。
但它确实正确地分配了值,表明DataSource
已正确设置。当我分配值时,它会获取正确的显示成员。
我已根据其他相关帖子尝试过的事情
- 使用List
代替DataTable
[完全相同]
- 使用enum
代替DataTable
[工作正常]
- 通过DataTable
使用BindingSource
对象
- 检查所有行,列,单元格的“只读”= false。
- 作为预防措施,在特定列的cell_enter
函数上指定“只读”= false,如果DataSource
则设置null
。
当我在调试中看DataGridViewComboBoxCell
[或列]时,我看到已填充项目。
我真的没有想法,任何帮助都表示赞赏。
如果它有帮助,我已经粘贴了一些代码片段
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()];
答案 0 :(得分:0)
添加:patientGrid.Rows [rowIndex] .Cells [5] .ReadOnly = false;
答案 1 :(得分:0)
在Designer中,单击小箭头(右上角),然后单击“编辑列”。选择ComboBox并将Read Only字段设置为false