DataGridViewComboBox 下拉列表不显示任何可供选择的项目,下拉不起作用

Posted

技术标签:

【中文标题】DataGridViewComboBox 下拉列表不显示任何可供选择的项目,下拉不起作用【英文标题】:DataGridViewComboBox drop down list does not show any items for selection, drop down doesn't work 【发布时间】:2012-09-07 21:31:25 【问题描述】:

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

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

我已经根据其他相关帖子尝试过的事情 - 使用List 而不是DataTable [工作方式完全相同] - 使用enum 而不是DataTable [工作正常] - 通过BindingSource 使用DataTable 对象 - 在所有行、列、单元格上检查“只读”= false。 - 作为预防措施,在cell_enter 函数上为特定列分配“只读”= false,如果是null,则设置DataSource

当我在调试中查看DataGridViewComboBoxCell[or column] 时,我看到项目已被填充。 我真的没有想法,任何帮助表示赞赏。 如果有帮助,我已经粘贴了一些代码sn-ps

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于DataGridViewComboBox 下拉列表不显示任何可供选择的项目,下拉不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如果 datagridviewcombobox 的值不在 datagridviewcomboboxcolumn 数据源中,我该怎么办?

vb.net 为 datagridviewcombobox 中的每个项目显示工具提示文本

DataGridViewComboBox 数据源

DataGridView ComboBox 列动态项

将 DataGridViewComboBox 默认设置为等于现有 DataGridView 列

DataGridViewCombobox 列中的自动完成有啥奇怪的行为?