我正在使用带有LINQ2SQL的XtraGrid作为数据源,我遇到了一些问题。
有时,在数据库中发布更改时会发生数据验证错误(例如,在唯一索引冲突、触发器错误或FK不存在的情况下,或者您试图删除某人的父级等情况)。在这种情况下,我需要通知用户并使其能够更正数据或恢复行。
不幸的是,我找不到最好的地方来放置代码,并使其成为可能。在GridView.ValidateRow事件主体中,底层数据尚未更改( dataContext.SubmitChanges()调用也不会引起任何更改)。
GridView.RowUpdated事件看起来像是将更改保存到数据库的好地方,但我无法保持错误行的焦点(如果用户将焦点移到另一行而导致行更新,则焦点将在此事件处理程序完成后消失)。
在GridView中执行insert/update/delete操作时处理数据库错误的常见解决方案是什么?
发布于 2013-11-08 00:49:23
执行以下操作:
使用以下伪代码:
using DevExpress.XtraGrid.Views.Base;
void SomeViewHere_RowUpdated(object sender, RowObjectEventArgs e) {
try {
...
d.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);
}
catch (Exception ex) {
...
BeginInvoke(new Action(() => {
//Handle GridControl.NewItemRowHandle State
//Or
//Maintain User Changes
}));
}
}https://stackoverflow.com/questions/19696460
复制相似问题