在datagridview的底部添加新行

时间:2015-08-13 14:12:01

标签: c# datagridview

我的datagridview在我的表单上有一列和一条记录,我想通过单击按钮在datagridview的底部添加新行,并用Rows.Count编号填充最后一个单元格。但似乎当使用dataGridView1.Rows.Add()方法添加新行时,它会插入到当前行的顶部。如何在datagridview的底部插入一行?预期会出现这种情况吗?

感谢。

private void button1_Click(object sender, EventArgs e)
 {

    dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[0].Value = dataGridView1.Rows.Count;
    dataGridView1.Rows.Add();

}

enter image description here

3 个答案:

答案 0 :(得分:0)

试试这个:

private void button1_Click(object sender, EventArgs e)
{
    object[] rowData = new object[dataGridView1.Columns.Count];
    rowData[0] = dataGridView1.Rows.Count;
    dataGridView1.Rows.Add(rowData);          
}

答案 1 :(得分:0)

虽然问题可能是duplicate,但就该问题提供的答案并不是一个充分的解决方案。你会明白为什么。

您的操作是dataGridView1.Rows.Add();在“当前行的顶部添加新行。”这种情况并非如此。使用当前设置,设计器中默认以下内容:

this.dataGridView1.AllowUserToAddRows = true;

这导致网格的底部(未排列)行,由*符号表示。这是 NewRow ,如代码所示,通过this.dataGridView1.NewRowIndex访问。每次编辑此行时,都会提交,并添加另一个 NewRow

DGV NewRow

为什么重要?因为当您将此属性设置为true时,调用dataGridView1.Rows.Add()会在NewRow之前的提交的行的底部添加一个新行。例如:

private void button1_Click(object sender, EventArgs e)
{
    dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[0].Value = dataGridView1.Rows.Count;
    dataGridView1.Rows.Add(new object[] { "I'm new" });   
}

Added Row

建议的答案:dataGridView1.Rows.Insert(dataGridView1.Rows.Count - 1, 1)将做同样的事情。因此,为什么它不是一个解决方案。

<强>解决方案

交换两行代码的顺序。

private void button1_Click(object sender, EventArgs e)
{
    dataGridView1.Rows.Add();
    dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells[0].Value = dataGridView1.Rows.Count;   
}

solved

答案 2 :(得分:0)

在行添加按钮单击事件中编写代码,如下所示

private void btnRowAdd_Click(object sender, EventArgs e)
{
    String[] row = { "", "", "", "", "", "", "" };
    dataGridView1.Rows.Add(row);
    dataGridView1.AllowUserToAddRows = false;
}

这是行添加按钮: Here is row add button

然后还在新按钮中调用该事件,如下所示:

Here is new button

btnRowAdd_Click(e, e);