尝试在运行时向EntityCollection添加新记录,并使用新信息更新DataGridView。
我尝试将datagridview直接绑定到实体集合(即ObjectSet),并通过绑定到同一集合的BindingSource绑定。
我已经尝试了DataGridView.Refresh(),DataGridView.EndEdit()和BindSource.ResetBindings()等,但似乎没有任何效果。
答案 0 :(得分:0)
试试:
bindingSource.DataSource = null;
bindingSource.DataSource = theCollection;
或者,您可以在BindingList<T>
中维护数据的内存副本。将DataGridView绑定到BindingList,当您向ObjectSet
添加实体时,也将其添加到BindingList
。
答案 1 :(得分:0)
我遇到了同样的问题。微软应该关心使用他们技术的人,EF应该关心数据绑定。 Jaime,如果您找到更好的方法,请更新此列表。对我来说,重新创建上下文实例对我来说很好。有趣的是调试器显示实体上下文&amp;绑定源有最新的更新,但datagridview仍然不刷新。感谢
Here是迄今为止我找到的最佳解决方案 -
基本上你需要做
bindingSource.DataSource = EntityContext.Collection
.Execute(MergeOption.AppendOnly);
答案 2 :(得分:0)
我希望现在还为时不晚=)我有一些在这里有用的东西......
// Entity Data Model
private ManagerEntities context = new ManagerEntities();
// declare private member
private BindingList<Currency> lstCurrencies = null;
// on form load, load data and bind to DataGridView's DataSource
private void Form1_Load(object sender, EventArgs e) {
lstCurrencies = new BindingList<Currency>();
ObjectResult or = ((ObjectQuery)currencies).Execute(MergeOption.AppendOnly);
foreach (Currency c in or)
lstCurrencies.Add(c);
// dgMain is my DataGridView
dgMain.DataSource = lstCurrencies;
}
// this will save objects that have changed. You might want to add logic for newly created and deleted objects.
private void btnSave_Click(object sender, EventArgs e) {
context.SaveChanges();
}