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中是否修改了某些行?
谢谢,
答案 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。
按
获取当前行号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;
}