遇到数据库错误时阻止行更改

本文关键字:数据库 错误 遇到 | 更新日期: 2023-09-27 17:54:36

情况:

我正在VS2013中用C#开发一个winforms应用程序。

我有一个通过DataAdapter绑定到MySQL表的datagridview。每当用户从编辑过的行单击到新行时,就会进行行验证和数据库更新。行验证在RowValidatating和dataadapter中处理。更新在RowValidatat中处理。

问题:

如果RowValidatating中出现验证错误,则我可以使用Cancel=true来停止更新,并将出现错误的行保留为当前选择。但是,当数据库更新时(例如,在数据库约束或并发性阻止更新的情况下(,验证也可能失败。我可以捕获这些,但由于我现在在RowValidatated中,Cancel=true不再可用。结果,我把原来的一行标记为错误,但选择已经移到了新行。

问题:

是否有某种方法可以放弃进一步的处理,特别是在RowValidated中更新后移动到新行?换句话说,在RowValidatated中是否存在类似Cancel=true的情况?

遇到数据库错误时阻止行更改

在https://msdn.microsoft.com/en-us/library/ms229603.aspx.

上面写着:

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