从BindingSource的最后一次EndEdit调用后撤消所有更改

时间:2009-08-03 19:31:29

标签: c# .net data-binding ado.net bindingsource

这是场景(使用绑定到DataSet中的DataTable的BindingSource):

  1. 用户创建新的地址簿 联系,填写第一个和最后一个 数据绑定控件中的名称。
  2. 他按了Apply,他的活动 处理程序调用 BindingSource.EndEdit()。
  3. 然后他意识到有一个 错误,并添加了一个电子邮件地址。
  4. 但是当他按下Apply时 验证失败(电子邮件无效 格式),所以不调用EndEdit()。
  5. 他决定不进行编辑,并且 按下取消按钮,其中 事件处理程序调用 BindingSource.CancelEdit()。
  6. 但是,而不是回归到 只与First和。的新联系 姓氏,没有电子邮件, 相反,BindingSource已经摆脱了 整个记录。
  7. 自上次调用EndEdit()以来,有没有办法只撤消操作?我的印象是,CancelEdit()应该如何工作。

1 个答案:

答案 0 :(得分:3)

作为解释,DataTable仅为记录(原始和当前)保存2个状态。您的请求需要多个州。

要实现您的目标,您应该刷新对数据库的更改(例如Adapter.Update(table))以响应成功的Apply。这可以促使你的电流变为原始状态,下一个取消可以回归到那个。

这可能符合您的要求,也可能不符合您的要求。