C#DataGridView捕获已删除的行

时间:2010-06-16 14:45:17

标签: c# .net vb.net ado.net datagridview

1

我正在使用DataGridView,它绑定到数据集。 还有一个bindingNavigator。

当用户通过单击“bindingNavigatorDeleteItem”按钮删除行时,我试图删除该行。

private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)        
{
        int crow = gridEventType.CurrentCell.RowIndex;

但它会在删除所选行后返回新选择的行。 所以,如果我有两排 0 1 2 我删除2

乌鸦是1,而不是2.

我在这里遗漏了什么吗?

2。我如何知道datagridview中是否修改了某些行?

谢谢,

4 个答案:

答案 0 :(得分:1)

您应该使用DataGridViewCellEventArgs

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

    private void bindingNavigatorModifiedCell_CellValueChanged(object sender, 
                                                   DataGridViewCellEventArgs e)
    {
         //updated row
         int cRow = e.RowIndex;
    }

答案 1 :(得分:1)

使用datagridview.UserDeletingRow事件获取已删除的行对象。

答案 2 :(得分:0)

我的问题#1。

  • 将BindingNavigator的“DeleteItem”属性更改为(none)
  • 创建“DeleteItem_Clicked”
  • 的事件处理程序
  • 获取当前行号

    int cRow = gridEventType.CurrentCell.RowIndex;

  • 从bindingsource删除当前项目

    BindingNavigator.BindingSource.RemoveCurrent();

答案 3 :(得分:0)

尝试使用UserDeletingRow作为删除行的事件处理程序,在此方法中,您可以获取行索引,如下所示:

 private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
    {
        int tmpId = (int) e.Row.Index;
    }