C# DataGridView capturing deleted row
1.
我正在使用绑定到数据集的DataGridView。
还有一个bindingNavigator。
当用户通过单击" bindingNavigatorDeleteItem"按钮删除行时,我正在尝试删除该行。
1 2 3 | private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e) { int crow = gridEventType.CurrentCell.RowIndex; |
,但是在删除所选行之后,它将返回新选择的行。
所以,如果我有两行
0
1个
2个
我删除2
乌鸦为1,而不是2。
我在这里想念什么吗?
2。我如何知道是否在datagridview中修改了某些行?
谢谢,
使用datagridview.UserDeletingRow事件获取已删除的行对象。
您应该使用
1 2 3 4 5 6 7 8 9 10 | private void bindingNavigatorDeleteItem_Click(object sender, DataGridViewCellEventArgs e) { int cRow = gridEventType.Rows[e.RowIndex]; //delete row from persisted storage //rebind data to persisted storage or remove row directly: gridEventType.Rows.RemoveAt(cRow); } |
第二点是一个CellValueChangedEvent。
1 2 3 4 5 6 | private void bindingNavigatorModifiedCell_CellValueChanged(object sender, DataGridViewCellEventArgs e) { //updated row int cRow = e.RowIndex; } |
尝试使用
1 2 3 4 | private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) { int tmpId = (int) e.Row.Index; } |
对于我的问题1。
- 将BindingNavigator的" DeleteItem "属性更改为(无)
- 创建一个" DeleteItem_Clicked "事件处理程序
-
通过
获取当前行号
int cRow = gridEventType.CurrentCell.RowIndex;
-
从bindingsource
删除当前项目
BindingNavigator.BindingSource.RemoveCurrent();