如果输入不正确,如何回滚gridview中的更改

mus*_*bar 6 c# error-handling datagridview winforms

我有一个绑定到对象列表的DataGridView.它有一些用户可以编辑的列.某些输入不允许作为一个整体的行.如果用户在某个单元格中输入无效输入,我该如何回滚.我尝试使用RowValidating事件处理程序,但在更改单元格值后未调用它.即使我实现CellValueChanged,我仍然无法回滚更改.......不知道如何实现这一目标

mih*_*i71 12

存在数据绑定时,对我来说它适用于:

myBindingSource.CancelEdit();
myDataGridView.RefreshEdit();
Run Code Online (Sandbox Code Playgroud)

  • `datagridview.CancelEdit()`非常适合我! (7认同)

Kyl*_*ndo 6

编辑完成并验证更改后,您可以执行以下操作:

DataTable dt = this.dataGridView.DataSource as DataTable;
dt.RejectChanges();
Run Code Online (Sandbox Code Playgroud)

来自MSDN:

调用DataTable.RejectChanges方法时,仍处于编辑模式的任何行都将取消其编辑.删除新行.已修改和已删除的行将返回其原始状态(DataRowState.Unchanged).

  • 这意味着它无法将DataSource转换为DataTable. (2认同)