2014-08-27 461 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;