更改绑定BindingList时DataGridView不会更新

时间:2013-06-13 15:32:40

标签: c# winforms data-binding datagridview

问题:我有一个C#DataGridView(Windows窗体)。我已将其DataSource设置为我在网上找到的自定义SortableBindingList。当我向/从绑定列表添加/删除项目时,DataGridView不会更新,直到我重置DataSource。但是,如果我不使用这个自定义的SortableBindingList并使用标准的BindingList,那么它可以正常工作。但我需要能够排序。我正在使用EntityFramework,如果有任何帮助的话。

我尝试过:让我的实体继承INotifyPropertyChanged。无论出于何种原因,这都无济于事。我也尝试过网上的各种SortableBindingLists,并且没有找到一个可以在我的上下文中使用它的工作。我已经尝试修改我发现的那个,到目前为止没有运气。如果不发布10,000行以上的帖子很难具体。

要求:一个有效的SortableBindingList,可以以编程方式排序并具有绑定(从列表中添加/删除反映在DataGridView上)。理想情况下,它将类似于我目前在下面的代码中使用它(以防止过多的重构)。或者一些修复我做错的事情,因为它可能非常明显。我使用的SortableBindingList来自this article

一些可能有用的代码:

使用下面正确绑定并按预期添加/删除,但我无法排序:

this.binding.DataSource = this.context.SomeEntityList.Local.ToBindingList();

其中“SomeEntityList”的类型为IDbSet<SomeEntity>

-

使用以下任何代码都可以对我进行排序,但不会按预期添加/删除:

this.binding.DataSouce = new SortableBindingList<SomeEntity>(this.context.SomeEntityList);
this.binding.DataSouce = new SortableBindingList<SomeEntity>(this.context.SomeEntityList.ToList());
this.binding.DataSouce = new SortableBindingList<SomeEntity>(this.context.SomeEntityList.Local);
this.binding.DataSouce = new SortableBindingList<SomeEntity>(this.context.SomeEntityList.Local.ToList());
this.binding.DataSouce = new SortableBindingList<SomeEntity>(this.context.SomeEntityList.Local.ToBindingList());

-

我正在设置DataGridView的DataSouce:

this.DataGridView.DataSouce = this.binding;

-

非常感谢任何帮助!

谢谢,安迪

1 个答案:

答案 0 :(得分:1)

我感觉到你的痛苦,我在同一个问题上挣扎了好几个小时。事实证明,无论是SortableBindingList还是BindingList,您都无法对自定义对象列表进行排序。

请尝试使用BindingListView:http://blw.sourceforge.net/ 使用BindingListView作为DataGridView的soruce。这将允许您拥有可排序列表,并且在添加或删除项目后更新没有问题。

如果您需要示例解决方案,请与我们联系。