【发布时间】:2014-11-06 09:49:42
【问题描述】:
我有两个按钮 - 取消和添加,分别在网格视图中添加新行,每次单击它时,都会将新记录添加到上下文中,该上下文连接到绑定源,绑定源设置为网格视图的数据源。
因此,如果我有 2 行并添加 8 行(例如),当我单击取消时,它应该只清除未保存的行并将它们再次保留为两行。
问题是它只取消了其中的 4 个(我可以在我的代码中看到问题,但我找不到解决方法)。
这是我的简单代码,目前还不行:
try
{
DialogResult dialogResult = MessageBox.Show("Do you want to cancel all unsaved changes?", "Cancel all unsaved changes", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
for (var i = 0; i < bindingSource1.Count; i++)
{
var f = bindingSource1[i] as MyConfiguration;
if (f.MyConfigurationId == 0)
{
context.RemoveMyConfiguration(f);
bindingSource1.Remove(f);
}
}
}
}
catch (Exception ex)
{
throw ex;
}
问题是我遍历绑定源并同时删除元素并且它得到更新,所以在某些时候它可以看到它已经循环了整个集合。
正确的方法是什么?我应该遍历网格中的行吗?
编辑:对此我深表歉意,它是 WinForms。 BindingSource的数据源是来自数据库的List。我正在使用实体框架 4.0。
【问题讨论】:
-
当您说“网格视图”时,您是指 ASP.NET
GridView还是实际上是 WinFormsDataGridView?BindingSource的数据源是什么? -
对此我深表歉意,它是 WinForms。
BindingSource的数据源是来自数据库的 List。我正在使用实体框架 4.0。 -
@jmcilhinney 其实我用的是 DevExpress 的网格视图,但我猜它和
DataGridView的原理是一样的
标签: c# winforms bindingsource