EF 5.0 WinForms在绑定DataGridView中添加新行

时间:2013-01-03 19:23:36

标签: winforms entity-framework data-binding

我使用dbcontext为实体设置了绑定dgv。工作良好。行显示在dgv中,我可以修改单元格并使用SaveChanges进行更新。但是,如果我尝试在dgv中添加新行,则不会保存。如果dgv绑定到实体不应该自动添加新行,还是我必须做一些事情来添加它?什么?请提供示例代码。我将尝试删除下一个dgv。我会遇到类似的问题吗?我怎么能让它工作?我在互联网上搜索了一些例子,但是他们停止了对这些恩赐的约束,并且不包括添加或删除。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

我发现了一些类似问题的链接,其中一个是:

DataGridView AllowUserToAddRow property doesn't work

似乎使用.ToList搞砸了绑定。在我的情况下,我使用MyContext.MyTable.Local.ToList作为源。当我删除.ToList时,一切都很完美。也许有人可以更详细地告诉我们为什么这样有效?

感谢那些首先发现这一点的人。

答案 1 :(得分:0)

.NET Framework 4的解决方案

我尝试删除.ToList(),但后来我没有得到任何结果。

所以我的解决方法是:

删除:
在datagridview UserDeletingRow事件

// Get deleted entity:
myEntityType currentEntity = (myEntityType)BindingSource[e.Row.Index];

// Delete directly from context
context.myEntityType.Remove(currentEntity);

对于插页:
在保存按钮上,我遍历BindingSource并检查是否有任何enitity具有ID == 0然后添加每个具有context.MyEntityType.Add(currentEntity);