我目前正試圖以一個組合框添加到一個DataGridView一個DGV一行。C#添加了的DataGridViewComboBoxCell
在DGV,有5列:複選框,字符串,字符串,組合框,組合框。
兩者組合框柱被配置爲datagridviewcomboboxcolumns(經由VisualStudio的設計者)。我的問題是添加行。
我現在的嘗試是:列已被定義,我通過dataGridView.Rows.Add添加行。 爲此,我使用了一個對象數組。例如:
dataGridViewRow row = new dataGridViewRow();
object[] obj = new object[5] {true, "str1", "str2", null, null};
dataGridView1.Rows.Add(obj);
這通過沒有任何錯誤。但從邏輯上來說,comboBoxes沒有任何東西。
我試過一個數據源設置爲4和行的第五單元:
錯誤...使用ROW.dataGridViewComboBoxCell.Items.Add:項目不顯示...
填充的obj [ 3]和4用新DGVcomboBoxCell或-Column:
Error... :The error message says "The dataGridViewComboBoxCell-Value is invalid.
進一步的信息:每列應在組合框相同的項目。 (這些以前通過互聯網加載,如xml)。將dataSource設置爲兩列會破壞整個DGV(我認爲是因爲其他colmns沒有數據源)。 簡而言之:如何將行添加到包含裝滿項目的組合框的DGV?
真誠, NOMAD
編輯:這裏的一些代碼來解決我的問題:
DataGridViewCheckBoxColumn check = new DataGridViewCheckBoxColumn();
check.Name = "Col1";
dataGridView1.Columns.Add(check);
dataGridView1.ColumnCount = 3;
dataGridView1.Columns[1].Name = "Col2";
dataGridView1.Columns[2].Name = "Col3";
object[] row = new object[] { true, "str1", "str2" };
dataGridView1.Rows.Add(row);
DataGridViewComboBoxColumn combo1 = new DataGridViewComboBoxColumn();
DataGridViewComboBoxColumn combo2 = new DataGridViewComboBoxColumn();
combo1.Name = "Col4";
combo1.Items.Add("100x100");
combo1.Items.Add("200x200");
combo2.Name = "Col5";
combo2.Items.Add("option1");
combo2.Items.Add("option2");
dataGridView1.Columns.Add(combo1);
dataGridView1.Columns.Add(combo2);
首先添加行,投欄,配置它們並將它們添加到該行。 設計器中不需要預先指定列。
感謝您的幫助,我想出瞭如何做到這一點更簡單: 我剛剛弄錯了dataGridView.Columns.Add方法,我想每次添加一行時,新的列被添加到整個DGB也使用Columns.Add方法,所以我使用了Cells.Add。 (出了什麼問題) 在添加行後添加列(到一行)是訣竅。 BTW對不起我的英文不好:P – NoMad
我在Linqpad測試你的第一個解決方案,它工作的很好。但是當我在Visual Studio的表單設計器中使用它時,它不會正確顯示ComboxCell。這很奇怪。 – zionpi