简体   繁体   English

C#DataGridView捕获已删除的行

[英]C# DataGridView capturing deleted row

1. 1。

I am using a DataGridView, which is bound to a dataset. 我正在使用DataGridView,它绑定到数据集。 There is a bindingNavigator as well. 还有一个bindingNavigator。

when a user deletes a row by clicking "bindingNavigatorDeleteItem" button, I am trying to get the row being deleted. 当用户通过单击“bindingNavigatorDeleteItem”按钮删除行时,我试图删除该行。

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

but it returns the newly selected row AFTER deletion of a selected row. 但它删除所选行后返回新选择的行。 so, If I have two rows 0 1 2 and I delete 2 所以,如果我有两行0 1 2,我删除2

crow is 1, not 2. 乌鸦是1,而不是2。

Am I missing something here? 我在这里错过了什么吗?

2. How do I know whether certain rows are modified in datagridview? 2.我如何知道datagridview中是否修改了某些行?

Thanks, 谢谢,

You should be using the DataGridViewCellEventArgs . 您应该使用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);
}

For your second point, there's a CellValueChangedEvent . 对于你的第二点,有一个CellValueChangedEvent

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

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

For my Question #1. 对于我的问题#1。

  • change "DeleteItem" property of BindingNavigator to (none) 将BindingNavigator的“DeleteItem”属性更改为(none)
  • create an eventhandler of "DeleteItem_Clicked" 创建一个“DeleteItem_Clicked”的事件处理程序
  • get current row number by 获取当前行号

    int cRow = gridEventType.CurrentCell.RowIndex; int cRow = gridEventType.CurrentCell.RowIndex;

  • delete the current item from bindingsource 从bindingsource中删除当前项

    BindingNavigator.BindingSource.RemoveCurrent(); BindingNavigator.BindingSource.RemoveCurrent();

Try to use UserDeletingRow as an event handler for deleting a row, and inside this method you can get the row index and as below: 尝试使用UserDeletingRow作为删除行的事件处理程序,在此方法中,您可以获取行索引,如下所示:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM