问题:我有一个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;
-
非常感谢任何帮助!
谢谢,安迪
答案 0 :(得分:1)
我感觉到你的痛苦,我在同一个问题上挣扎了好几个小时。事实证明,无论是SortableBindingList还是BindingList,您都无法对自定义对象列表进行排序。
请尝试使用BindingListView:http://blw.sourceforge.net/ 使用BindingListView作为DataGridView的soruce。这将允许您拥有可排序列表,并且在添加或删除项目后更新没有问题。
如果您需要示例解决方案,请与我们联系。