情况:

我正在VS2013中使用C#开发Winforms应用程序。

我有一个通过DataAdapter绑定到MySQL表的datagridview。每当用户从已编辑的行移至新行时,都会进行行验证和数据库更新。行验证在RowValidating中处理,而dataadapter更新在RowValidated中处理。

问题:

如果RowValidating中发生验证错误,那么我可以使用Cancel = true停止更新并将行保持错误状态作为当前选择。但是,在更新数据库时(例如,在数据库约束或并发阻止更新的情况下)验证也会失败。我可以捕获它们,但是,正如我现在在RowValidated中一样,Cancel = true不再可用。结果,我最终将旧行标记为错误,但是选择已移至新行。

题:

有什么方法可以放弃进一步的处理,尤其是一旦事情进展到RowValidated中的Update时,就放弃到新的行?换句话说,在RowValidated中是否有一些Cancel = true的类似物?

最佳答案

https://msdn.microsoft.com/en-us/library/ms229603.aspx找到了解决此问题的方法。

它说:


  如果您在验证之后进行自定义验证
  事件,它不会影响数据绑定。例如,如果您有
  尝试取消数据绑定的Validated事件中的代码,
  数据绑定仍然会发生。在这种情况下,执行验证
  在Validated事件中,更改控件的数据源更新模式
  属性(在(数据绑定)(高级)下)从OnValidation到Never,
  并将Control.DataBindings [“”]。WriteValue()添加到您的
  验证码。

10-02 03:13
查看更多