Vb.net DataGridView.DataError事件,将行上的更改与导致错误的单元格分开
在问题发生之前,澄清DGV中发生的情况。我用数据加载DGV,并将第一列设置为主键列。除了下面的场景之外,添加和编辑数据是完美的 当编辑一个现有的行(有多个列)时,我们假设总共有3行,以供参考。我更改了第2列和第3列中的值。然后,我将列1的值(主键列)更改为主键列中现有值的值。然后触发DataError事件,我会相应地处理它(除了一件事之外,我对这件事以及我如何处理它感到满意)。在事件结束时,整行编辑的内容将恢复(更改回原始内容),我希望停止此操作(我设置了焦点并开始对列1的单元格进行编辑,然后再次开始编辑过程) 目前,它将处理错误并执行我需要它执行的所有操作,但我无法找到事件,也无法阻止它在DataError事件触发后放弃我的更改 任何人都可以告诉我一个事件或一个停止丢弃数据的方法Vb.net DataGridView.DataError事件,将行上的更改与导致错误的单元格分开,vb.net,datagridview,Vb.net,Datagridview,在问题发生之前,澄清DGV中发生的情况。我用数据加载DGV,并将第一列设置为主键列。除了下面的场景之外,添加和编辑数据是完美的 当编辑一个现有的行(有多个列)时,我们假设总共有3行,以供参考。我更改了第2列和第3列中的值。然后,我将列1的值(主键列)更改为主键列中现有值的值。然后触发DataError事件,我会相应地处理它(除了一件事之外,我对这件事以及我如何处理它感到满意)。在事件结束时,整行编辑的内容将恢复(更改回原始内容),我希望停止此操作(我设置了焦点并开始对列1的单元格进行编辑,然后再
如果你需要更多的信息,请让我知道,我会帮助你。我还没有发布任何代码,因为它在这一瞬间并不相关,因为我正在试图找到丢弃我的更改的事件/方法的入口点 在这里的一位成员的帮助下,我发现了这个问题。因此,基本上可以归结为在CellEndEdit事件执行时不提交值
Dim row As DataRowView = DirectCast(DataGridView.CurrentRow.DataBoundItem, DataRowView)
If (row Is Nothing OrElse Not row.IsNew) Then
Validate()
DataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
我只在不是主键的列上执行此操作,因为我希望在引发DataError时还原此值并将其输入编辑状态,以便用户可以更改该值或将其保留为原始值
我还检查行是否是新的,因为这种情况不会发生在新行上