我有一个绑定到实体的绑定源。
normBindingSource.DataSource =
dowacodbEntities.norms.OrderBy(o1 => o1.UsePurpose_id).ThenBy(o2 => o2.Quantity);
然后在datagridview中显示bindingsource。如果我使用数据集,我可以调用HasChanges()方法来检查用户是否进行了更改。此外,我发现context.ObjectStateManager.GetObjectStateEntries(...)似乎是我正在寻找的,但我不知道如何使用它。
我的目的是当用户离开表单时,会出现一个消息框显示:“有一些更改,您想在退出之前保存它吗?”
答案 0 :(得分:1)
试试这个。我也遇到过。
创建一个检查修改的类。
//define first your datacontext
List<dowaCodbEntities> dowacodbEntities;
private bool CheckForModifications()
{
List<dowaCodbEntities> dowaCodbEntitiesCopy = normBindingSource.DataSource.Cast<dowaCodbEntities>().ToList();
if(dowacodbEntities.Count != dowaCodbEntitiesCopy.Count)
return true;
}
只要你需要它就可以调用该功能,主要是关闭时。然后,如果它返回true,则先停止关闭并询问是否要进行更改。如果您还有其他需要,请告诉我。
答案 1 :(得分:0)
这是迄今为止最好的方法:
bool changesMade = context.
ObjectStateManager.
GetObjectStateEntries(EntityState.Added |
EntityState.Deleted |
EntityState.Modified
).Any();