1

在一个DataGrid,我有一个DataGridViewComboBoxColumn。我在代码中分配了 aDataTable作为 a DataSource、 items 、 value 成员和 display 成员,但是ComboBox当我运行程序时显示为空。下拉菜单根本不起作用。

但是,它确实正确分配了值,这表明DataSource已正确设置。即,当我分配 value 时,它​​会获取正确的显示成员。

我已经根据其他相关帖子尝试过的事情 - 使用List而不是DataTable[ 工作原理完全相同] - 使用enum而不是[ 工作正常 ] -通过 a - 检查“只读” = false 在所有行、列、单元格上DataTable使用该对象. - 作为预防措施,为特定列分配“只读”= false on function 并设置if it is 。DataTableBindingSourcecell_enterDataSourcenull

当我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()];
4

2 回答 2

0

Add: patientGrid.Rows[rowIndex].Cells[5].ReadOnly = false;

于 2013-01-05T16:00:21.340 回答
0

在 Designer 中单击小箭头(右上角),然后单击编辑列。选择组合框并将只读字段设置为 false

于 2015-09-22T10:20:11.957 回答