You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将每行拥有不同ComboBox项的DataTable绑定到DataGridView?

问题原因

你手动创建普通文本列时仅设置了列名和表头文本,未指定DataPropertyName属性与DataTable中的对应字段绑定,导致数据源无法映射到UI列,因此显示为空。

正确实现代码

dataGridView1.AutoGenerateColumns = false;
// 普通文本列需显式指定DataPropertyName匹配DataTable的列名
dataGridView1.Columns.Add(new DataGridViewTextBoxColumn()
{
    Name = "String1",
    HeaderText = "String1",
    DataPropertyName = "String1"
});
dataGridView1.Columns.Add(new DataGridViewTextBoxColumn()
{
    Name = "String2",
    HeaderText = "String2",
    DataPropertyName = "String2"
});
DataGridViewComboBoxColumn comboCol = new DataGridViewComboBoxColumn();
comboCol.HeaderText = comboCol.DataPropertyName = comboCol.Name= "combo1";
dataGridView1.Columns.Add(comboCol);

bindingSource1.DataSource = CreateDataTable();
dataGridView1.DataSource = bindingSource1;

Dictionary<int, List<string>> comboDic = new Dictionary<int, List<string>>() {
{ 0, new List<string>() { "1", "11", "111" } },
{ 1, new List<string>() { "2", "22", "222" } } };
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
    DataGridViewComboBoxCell comboCell = (DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells["combo1"];
    comboCell.DataSource = comboDic[i];
    // 如需设置默认值,必须保证值在当前行的下拉列表范围内
    comboCell.Value = comboDic[i][0];
}

// 建议在DataTable中新增combo1列,用于存储下拉框选中值,避免值丢失
private DataTable CreateDataTable()
{
    DataTable dt = new DataTable();
    dt.Columns.Add(new DataColumn("String1"));
    dt.Columns.Add(new DataColumn("String2"));
    dt.Columns.Add(new DataColumn("combo1"));
    DataRow dr = dt.NewRow(); dr["String1"] = "a"; dr["String2"] = "aa"; dt.Rows.Add(dr);
    dr = dt.NewRow(); dr["String1"] = "b"; dr["String2"] = "bb"; dt.Rows.Add(dr);
    //...
    return dt;
}

额外注意事项

  • 如果需要支持用户手动新增行,建议订阅DataGridView.CellBeginEdit事件,在用户触发下拉编辑时再动态赋值对应行的数据源,适配新增行的场景
  • 禁止给ComboBox单元格设置不在当前行数据源列表内的值,否则会抛出值无效异常

内容的提问来源于stack exchange,提问作者tp1415926535

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:36:06