如何在DataGridView单元格中添加两行

时间:2014-12-19 14:31:42

标签: c# winforms 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);  

1 个答案:

答案 0 :(得分:0)

如果您想要在单个单元格中进行所有操作,请更改以下代码

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

如果你想要一个Combobox

    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" });

如果你想要每行不同的下拉

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);
    }
}