2014-08-27 108 views
0

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

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循环中执行它,因为我需要索引来获取数据。

+0

后你怎么加列的值,你如何设置数据源 – 2014-08-27 09:43:22

+0

列在设计师加入,它的唯一的数据源是数据表,它是以编程方式创建的。 – zergerge 2014-08-27 10:10:12

回答

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;