5

尝试在运行时将新记录添加到 EntityCollection 并使用新信息更新 DataGridView。

我尝试将datagridview 直接绑定到实体集合(即ObjectSet),并通过绑定到同一集合的BindingSource。

我已经尝试过 DataGridView.Refresh()、DataGridView.EndEdit() 和 BindSource.ResetBindings() 等,但似乎没有任何效果。

4

3 回答 3

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();
}
于 2012-02-02T15:13:18.420 回答
0

试试看:

bindingSource.DataSource = null;
bindingSource.DataSource = theCollection;

或者,您可以在BindingList<T>. 将 DataGridView 绑定到 BindingList,当你向 BindingList 添加实体时ObjectSet,也将其添加到 BindingList 中BindingList

于 2011-01-23T17:26:07.227 回答
0

我遇到了同样的问题。微软应该关心使用他们技术的人,而 EF 应该关心数据绑定。Jaime,如果您找到更好的方法,请更新此列表。对我来说,重新创建上下文实例对我来说很好。有趣的是调试器显示实体上下文和绑定源有最新更新,但 datagridview 仍然没有刷新。谢谢

是迄今为止我找到的最佳解决方案 -

基本上你需要做

bindingSource.DataSource = EntityContext.Collection
                               .Execute(MergeOption.AppendOnly);
于 2011-01-29T19:23:22.740 回答