2017-01-12 71 views
0

我在Windows窗體應用程序中有一個datagridview。 datagridview有3列。第一欄是Combobox。 我想將項目添加到組合框,但它工作。 下面是代碼(語言C#)將項目添加到已存在的datagridview組合框列中的組合框中

foreach (int counter=0; counter<5; counter++) 
     { 
     this.dataGridView1.Rows.Add(); 

     DataGridViewComboBoxCell cbCell = new DataGridViewComboBoxCell(); 
     cbCell.Items.Add("Male"); 
     cbCell.Items.Add("Female");     
     dataGridView1.Rows[counter].Cells[0] = cbCell; 

     dataGridView1.Rows[counter].Cells[1].Value = firstname[counter]; 

     dataGridView1.Rows[counter].Cells[2].Value = lastname[counter];      

    } 

該網格表示5行。但是第一個組合框列在每個組合框中都沒有項目。

請幫忙。 謝謝。

回答

1

由於代碼並未顯示如何構建列,因此很難說出問題所在,但代碼未使用DataGridViewComboBoxColumDataGridViewComboBoxColumn是您需要使第0列中的每一行都具有「男性」,「女性」選項的組合框。

格式錯誤的foreach循環不正確,無法編譯。我假設for循環是你正在尋找的。在此for循環之後...將新行正確添加到網格中。然後創建一個新的DataGridViewComboBoxCell並添加當前行的單元格[0]。 dataGridView1.Rows[counter].Cells[0] = cbCell;。這個單元格[0]被添加到每一個新的行。

如果DataGridViewViewComboBoxColumn設置正確,這是不必要的。添加DataGridViewComboBoxCell是完全有效的,基本上允許您將組合框放入任何「SINGLE」單元格中。但是,如果以這種方式使用組合框本身的使用本身就是有問題的。

循環正在將數據「添加」到dataGridView1。正如你在閱讀數據時,關於「性別」(男性,女性)的部分似乎缺失,所以這個值並不像其他值一樣。例如:沒有一個線象下面這樣:

dataGridView1.Rows[counter].Cells[0].Value = gender[counter]; 

如果有一個「性別」陣列保持此信息,則當代碼中的代碼組合上面的行設置該值(男,女)框中的列將自動將組合框選擇設置爲該值。數據將只是這兩個值中的「一個」(1)。

因此,假如這是你在找什麼下面的代碼演示瞭如何將數據讀入一個組合框單元格時,請小心的DataGridViewComboBoxColumn

字;如果組合框列的字符串數據與組合框項目列表中的某個項目不匹配,則代碼將在未被捕獲和處理時崩潰。如果該值爲空字符串,則組合框將選定值設置爲空。

// Sample data 
string[] firstname = { "John", "Bob", "Cindy", "Mary", "Clyde" }; 
string[] lastname = { "Melon", "Carter", "Lawrence", "Garp", "Johnson" }; 
string[] gender = { "Male", "", "Female", "", "Male" }; 
// Create the combo box column for the datagridview 
DataGridViewComboBoxColumn comboCol = new DataGridViewComboBoxColumn(); 
comboCol.Name = "Gender"; 
comboCol.HeaderText = "Gender"; 
comboCol.Items.Add("Male"); 
comboCol.Items.Add("Female"); 
// add the combo box column and other columns to the datagridview 
dataGridView1.Columns.Add(comboCol); 
dataGridView1.Columns.Add("FirstName", "First Name"); 
dataGridView1.Columns.Add("LastName", "Last Name"); 
// read in the sample data 
for (int counter = 0; counter < 5; counter++) 
{ 
    dataGridView1.Rows.Add(gender[counter], firstname[counter], lastname[counter]); 
} 

希望這會有所幫助。

+0

非常感謝JohnG –