【问题标题】:Populate DataGridView ComboBoxCell programmatically以编程方式填充 DataGridView ComboBoxCell
【发布时间】:2014-09-03 02:31:29
【问题描述】:

我在 winforms 中有一个 DataGridView,它包含一个组合框列。网格视图以编程方式填充,并且在开始时为空。 “list”是一个包含自定义对象的列表。每行的 value1/2/3 都是唯一的。

int[] array = new[] {value1,value2,value3}
for (int i = 0; i < list.Count; i++)
{
    DataRow newrow = MyDataTable.NewRow();
    newrow["idColumn"] = list[i].Customer_id;
    newrow["dateoforderColumn"] = list[i].Customer_date;
    newrow["commColumn"] = list[i].Customer_comment;
    // This is what I want, and can't get to work.
    newrow["comboColumn"] = array;
    // I have also tried (newrow["comboColumn"] as DataGridViewComboColumn).DataSource
    // but it didn't work either.

    MyDataTable.Rows.Add(newrow);
}

如何填充新创建的组合框单元格?另外,我需要在 for 循环中进行,因为我需要索引来获取数据。

【问题讨论】:

  • 贴出如何添加列以及如何设置DataSource
  • 在设计器中添加了列,它唯一的数据源是那个数据表,它是通过程序创建的。

标签: c# winforms datagridview


【解决方案1】:

从您的代码的外观来看,您只有一个需要设置的值数组。在这种情况下,您只需为列设置一次,而不是为每一行设置一次,我通常在构造函数中或在填充行之前执行此操作。

        //Clear any junk items that may have been there from the designer or previous view
        ((DataGridViewComboBoxColumn)MyDataTable.Columns["comboColumn"]).Items.Clear();
        //Add you new values
        ((DataGridViewComboBoxColumn)MyDataTable.Columns["comboColumn"]).Items.AddRange(array);

然后设置新行单元格的值

        //Set value to be selected in new row
        newrow["comboColumn"] = list[i].Customer_value;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    相关资源
    最近更新 更多