绑定列表继续跟踪更改

时间:2017-12-31 15:31:13

标签: c# winforms datagridview 2-way-object-databinding

在窗体上(在构造函数中)我有一个DataGridView控件和一个BindingSource。由于BindingSource的DataSource选择了我的Order类。对于DataGridView - BindingSource。我加载这样的数据:

context.Orders.Load();
orderBS.DataSource = context.Orders.Local.ToBindingList();

一切运转良好。我以单独的形式编辑数据并将其传递给Order类的实例(orderBS.Current作为Order)。在这种形式中,我保存了更改 - context.SaveChanges()。返回并更新DataGridView。现在我想创建搜索字段。当您点击按钮"搜索"我正在做以下事情:

bindingSource.DataSource = context.Orders.Where(x => x.Contains(txtBox.Value)).ToList();

现在,事实证明orderBS仅与List相关联。通常会过滤数据。就像我给Order实例一样。打开表单并编辑 - 更新DataGridView!为什么?我没有调用ToBindingList()。

我发现了对这个问题的讨论here。布拉德利史密斯回应如此:

  

您可以使用BindingList或BindingSource来获取此功能   相反,但你的Person类仍然需要支持   INotifyPropertyChanged或者你只会在同步时获得同步   项目在列表中添加/删除,而不是列表项目   自己改变了。

但我的Order类很简单,不支持INotifyPropertyChanged。为什么更新DataGridView?

0 个答案:

没有答案