Remove Uncommitted New Rows Of DGV

浪子不回头ぞ 提交于 2020-04-07 02:32:03

问题


I have unbound DGV and I wants to remove unwanted last row of it on DGV Leave EventHandller. How to do it?.

I know to add new rows to dgv by programmatically and setting the property AllowUserToAddRows = false.

But my question is : is it possible to remove last row of DGV without setting property AllowUserToAddRows = false?.

OR

Is it possible to remove uncommitted new rows of DGV?


回答1:


Set the DataGridView AllowUserToAddRows property to False.

However you'll have to provide a method which will allow the user to enter a new row. For example you can have that when the user double click the DataGridView, you set AllowUserToAddRows to true. And then when they are done editing, you set the value back to False.

To Add a new Row:

Lets say your DataGridView is called MyDataGridView and you have a Button called BtnAddRow and when the button is clicked, it adds an new row to your DataGridView.

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

Alternatively, you could just handle DataGridView OnDoubleClick event in which you can call MyDataGridView.Rows.Add() to add a new row.




回答2:


If your DataGridView is bound to a DataSet, this does the trick for deleting the current row:

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



回答3:


You can remove uncommitted new rows in datagrid view by setting AllowUserToAddRows = false

grid.AllowUserToAddRows = false;




回答4:


I want to remove last row on DGV Leave Event.

Just attach an handler on DataGridView.Leave event and use this code:

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

EDIT: Are you referring to the last blank row that appears in the DataGridView? If yes it is there to allow the user to create new rows. To disable it follow the suggestion of Jean-Luis setting AllowUserToAddRows property to false.




回答5:


I had the same problem with removing the "last" row from a DataGridView. I solved it like this.

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

It skips the last row which is the uncommitted new row that throws an exception if you try to remove it.

To remove several rows:

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

Therefore, no need to set AllowUserToAddRows = false.



来源:https://stackoverflow.com/questions/5326851/remove-uncommitted-new-rows-of-dgv

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!