我有一个DataGridView
,它有一个ComboBoxColumn
我添加在表单设计器。在我的代码中,我想添加行,每个行都有单独的ComboBoxCell
,这是由于每一行在组合框中有不同的值。
我尝试添加DataGridViewComboBoxCell
项目如下所示,也通过创建DataTable
并将其绑定到DataGridViewComboBoxCell
。当我运行程序时,我可以看到行和组合框,但是当我试图单击这些框时,没有显示任何项。
DataGridViewComboBoxCell cell = new DataGridViewComboBoxCell();
DataGridViewComboBoxCell cell2 = new DataGridViewComboBoxCell();
cell.Items.Add("Item1");
cell.Items.Add("Item2");
cell.Items.Add("Item3");
cell2.Items.Add("Item4");
cell2.Items.Add("Item5");
cell2.Items.Add("Item6");
DataGridViewRow row = new DataGridViewRow();
DataGridViewRow row1 = new DataGridViewRow();
row.Cells.Add(cell);
row1.Cells.Add(cell2);
dataGridView1.Rows.Clear();
dataGridView1.Rows.Add(row);
dataGridView1.Rows.Add(row1);
dataGridView1.Refresh();
我似乎在其他帖子中找不到解决方案。有人能帮我把这些东西拿出来展示吗?
EDIT: DataGridView
已被设置为禁用编辑,我发现这阻止了我查看ComboBox
项。在实际的程序中,还有其他列,并且只能读取,这就是我禁用编辑的原因。我仍然希望用户能够点击并查看ComboBox
项目。
确保您已经从ColumnType
中为该列选择了DataGridViewComboboxColumn
。
如果您没有添加列,那么您可以像这样添加。
DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
column.Name ="cmbItem";
grd.Columns.Add(column);
如果您已经添加了该列,那么您可以直接从组合框单元格的引用中添加项。
int rowIndex = grd.Rows.Add();
DataGridViewComboBoxCell oCell = (DataGridViewComboBoxCell)grd.Rows[rowIndex].Cells["cmbItem"];
oCell.Items.Add("Item1");
oCell.Items.Add("Item2");
oCell.Items.Add("Item3");
rowIndex = grd.Rows.Add();
DataGridViewComboBoxCell oCell = (DataGridViewComboBoxCell)grd.Rows[rowIndex].Cells["cmbItem"];
oCell.Items.Add("Item4");
oCell.Items.Add("Item5");
oCell.Items.Add("Item6");