2010-06-16 59 views
2

1.C#的DataGridView

我使用一个DataGridView,它被绑定到一个数据集捕获的图像删除的行。 还有一个bindingNavigator。

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

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

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

乌鸦是1,不2.

我失去了一些东西在这里?

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

感谢,

回答

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; 
    } 
+0

我无法添加事件处理程序内搭DatagridViewCellEventArgs为bindingNavigatorDeleteItem 另外,bindingNavigator没有这样的CellValueChanged事件。我认为这可以工作,如果我使用它的DataGridView如: public void DataGridView_CellValueChanged(...) – Devphil 2010-06-16 15:11:57

0

对于我的问题#1。

  • 变化 “DeleteItem” BindingNavigator至(无)
  • 创建事件处理程序的 “DeleteItem_Clicked”
  • 通过

    得到当前行号码属性

    INT乌鸦= gridEventType.CurrentCell.RowIndex;

  • 从BindingSource的

    BindingNavigator.BindingSource.RemoveCurrent删除当前项目();

1

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

+0

真的,你应该已经添加了这个作为评论。 – 2011-12-28 22:44:50

0

尝试使用UserDeletingRow作为一个事件处理程序删除行,而这个方法中,你可以得到行索引,如下图所示:

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