2014-12-19 27 views
0

這裏我試圖在一個單元格中添加多行,但失敗。如何在DataGridView單元格中添加兩行

請幫助我編碼,並給我想法,如果有其他控制我們可以這樣做。

string[] innerrow1 = new string[] { "50", "60", "70" }; 
string[] innerrow2 = new string[] { "a", "b", "c" }; 

dataGridView1.ColumnCount = 3; 
dataGridView1.Columns[0].Name = "Product ID"; 
dataGridView1.Columns[1].Name = "Product Name"; 
dataGridView1.Columns[2].Name = "Product Price"; 

dataGridView1.Rows.Insert(0, innerrow2); 

object[] row = new object[] { "1", innerrow1, "1000" }; 
dataGridView1.Rows.Add(row); 
row = new object[] { "2", innerrow2, "2000" }; 
dataGridView1.Rows.Add(row); 
+0

我不明白你的親blem。您的代碼正在向第二列添加內向類型。你想要的是所有的字符串放在第二列? – LPs

+0

第二列是否意味着下拉? – LarsTech

+0

請解釋你看到的結果以及你試圖讓他們成爲什麼樣的結果。好像你想要行內的行,這是不能做到的。或者你只是想讓文字「50,60,70」出現在第二列? –

回答

0

如果你想在一個單一的細胞特林如果你想有一個組合框

string[] innerrow1 = new string[] { "50", "60", "70" }; 
    string[] innerrow2 = new string[] { "a", "b", "c" }; 

    DataGridViewTextBoxColumn Col1 = new DataGridViewTextBoxColumn(); 
    Col1.HeaderText = "Product ID"; 
    dataGridView1.Columns.Add(Col1); 

    DataGridViewComboBoxColumn Col2 = new DataGridViewComboBoxColumn(); 
    Col2.HeaderText = "Product Name"; 
    Col2.Name = "Product Name"; 
    Col2.MaxDropDownItems = 3; 
    Col2.Items.Add(innerrow1[0]); 
    Col2.Items.Add(innerrow1[1]); 
    Col2.Items.Add(innerrow1[2]); 
    dataGridView1.Columns.Add(Col2); 

    DataGridViewTextBoxColumn Col3 = new DataGridViewTextBoxColumn(); 
    Col3.HeaderText = "Product Price"; 
    dataGridView1.Columns.Add(Col3); 

    dataGridView1.Rows.Add(new object[] { "1", innerrow1[0], "1000" }); 
    dataGridView1.Rows.Add(new object[] { "2", innerrow1[1], "2000" }); 
    dataGridView1.Rows.Add(new object[] { "3", innerrow1[2], "3000" }); 

如果你想不同的下拉爲每行簡化更改您的代碼如下

string innerrow1 = "50 60 70"; 
    string innerrow2 = "a b c"; 

public Form1() 
{ 
    InitializeComponent(); 

    string[] innerrow1 = new string[] { "50", "60", "70" }; 
    string[] innerrow2 = new string[] { "a", "b", "c" }; 

    DataGridViewTextBoxColumn Col1 = new DataGridViewTextBoxColumn(); 
    Col1.HeaderText = "Product ID"; 
    dataGridView1.Columns.Add(Col1); 

    DataGridViewComboBoxColumn Col2 = new DataGridViewComboBoxColumn(); 
    Col2.HeaderText = "Product Name"; 
    Col2.Name = "Product Name"; 
    Col2.MaxDropDownItems = 3; 
    Col2.Items.Add(innerrow1[0]); 
    Col2.Items.Add(innerrow1[1]); 
    Col2.Items.Add(innerrow1[2]); 
    dataGridView1.Columns.Add(Col2); 

    DataGridViewTextBoxColumn Col3 = new DataGridViewTextBoxColumn(); 
    Col3.HeaderText = "Product Price"; 
    dataGridView1.Columns.Add(Col3); 

    dataGridView1.Rows.Add(new object[] { "1", innerrow1[0], "1000" }); 
    dataGridView1.Rows.Add(new object[] { "2", innerrow2[0], "2000" }); 

    setCellComboBoxItems(dataGridView1, 0, 1, innerrow1); 
    setCellComboBoxItems(dataGridView1, 1, 1, innerrow2); 

} 

private void setCellComboBoxItems(DataGridView dataGrid, int rowIndex, int colIndex, object[] itemsToAdd) 
{ 
    DataGridViewComboBoxCell dgvcbc = (DataGridViewComboBoxCell)dataGrid.Rows[rowIndex].Cells[colIndex]; 
    // You might pass a boolean to determine whether to clear or not. 
    dgvcbc.Items.Clear(); 
    foreach (object itemToAdd in itemsToAdd) 
    { 
     dgvcbc.Items.Add(itemToAdd); 
    } 
} 
相關問題