删除未提交的DGV新行

时间:2011-03-16 14:39:09

标签: c# datagridview

我有未绑定的DGV ,我想在DGV Leave EventHandller上删除不需要的最后一行。怎么做?。

我知道通过编程方式将新行添加到dgv并设置属性AllowUserToAddRows = false。

但我的问题是:是否可以在不设置属性AllowUserToAddRows = false的情况下删除最后一行DGV。

OR

是否可以删除未提交的新DGV行?

5 个答案:

答案 0 :(得分:8)

将DataGridView AllowUserToAddRows属性设置为False

但是,您必须提供一种允许用户输入新行的方法。例如,当用户双击DataGridView时,您可以将AllowUserToAddRows设置为true。然后当它们完成编辑时,将值设置回False。

添加新行:

假设您的DataGridView名为MyDataGridView,并且您有一个名为BtnAddRow的Button,当单击该按钮时,它会向DataGridView添加一个新行。

private void btnAddRow_Click(object sender, RoutedEventArgs e)
{
       // Add an empty row
       MyDataGridView.Rows.Add();
}

或者,您可以处理DataGridView OnDoubleClick事件,您可以在其中调用MyDataGridView.Rows.Add()添加新行。

答案 1 :(得分:2)

如果您的DataGridView绑定到DataSet,这可以删除当前行:

If DataGridView1.CurrentRow.IsNewRow Then
    MyDataSet1.MyTable.Rows(DataGridView1.CurrentRow.Index).RejectChanges()
Else
    DataGridView1.Rows.Remove(DataGridView1.CurrentRow)
End If

答案 2 :(得分:2)

您可以通过设置AllowUserToAddRows = false来删除数据网格视图中未提交的新行

grid.AllowUserToAddRows = false;

答案 3 :(得分:1)

  

我想删除DGV离开事件的最后一行。

只需在DataGridView.Leave事件上附加处理程序并使用此代码:

private void MyHandler(object sender, EventArgs e)
{
     int count = dgv.Rows.Count;
     dgv.Rows.RemoveAt(count - 1);
}

编辑:您指的是DataGridView中显示的最后一个空行吗?如果是,则允许用户创建新行。要禁用此功能,请遵循Jean-Luis将AllowUserToAddRows属性设置为false的建议。

答案 4 :(得分:0)

DataGridView删除“最后”行时,我遇到了同样的问题。我这样解决了。

grid.Rows.RemoveAt(grid.Rows.Count - 2);

它会跳过最后一行,这是未提交的新行,如果您尝试将其删除,则会抛出异常。

要删除几行:

while (new_count < grid.Rows.Count - 1)
{
    grid.Rows.RemoveAt(grid.Rows.Count - 2);
}

因此,无需设置AllowUserToAddRows = false