2017-10-10 20 views
0

澄清发生问题之前DGV中发生的情况。我用数据加载我的DGV,并将第一列设置为主键列。除下面的情况外,添加和编辑数据是完美的。DataGridView.DataError事件,保持行上的更改与导致错误的单元格不同

当编辑一个现有的行(有多列)时,为了参考的目的,总共说3个。我更改列2和3中的值。然后,将第1列的值(主键列)更改为主键列中现有值的值。然后,这引发了DataError事件,我相应地处理了它(我对此感到满意,除此之外我还处理了它)。在事件结束时,整行编辑的内容还原(改回原来的),我想停止这一点(我设置了焦点,并开始编辑第1列的单元格,并重新开始编辑过程)。

目前它会处理错误,并做我需要的一切,但我无法找到该事件,也没有阻止它在DataError事件触发后放弃我的更改。

任何人都可以请我指出一个事件或停止这种丢弃数据的方式。

如果您需要更多信息,请让我知道,我会协助。我没有发布任何代码,因为它在这个瞬间不相关,因为我试图找到放弃我的更改的事件/方法的入口点。

回答

0

在这里的成员的帮助下,我发现了这个问题。所以基本上它归结为在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上升,从而使用户可以更改值或将其进入编辑状态,这个值是不是我的主键的列执行此作为原始价值。

我也检查行是否是新的,因为这种情况不会发生在新行上。

相关问题