ResetBindings()不会更新BindingSource。

5

我在WindowsForms应用程序中更新DataGridViewDataSource时遇到了问题。

我有一个DataGridView,其中包含我的自定义类SkoleniList数据。

private List<Skoleni> setrideneSkoleni; //list of objects

在MainForm()方法中,我调用以下内容:
 bindingDwgSkoleni = new BindingSource(); //create bindingsource
 bindingDwgSkoleni.DataSource = setrideneSkoleni; //set datasource for bindingsource
 dgwSkoleni.DataSource = bindingDwgSkoleni; // set datasource for datagridview

BindingSourceDataGridView设置DataSource

然后在另一个窗体中添加setrideneSkoleni的项目,button_Click方法包含以下内容:

setrideneSkoleni.Update(); // updates setrideneSkoleni
bindingDwgSkoleni.ResetBindings(false); //should update bindingSource, but DOES NOT

变量setrideneSkoleni已更新(添加了项目),但BindingSource没有更新(在调试中检查 - 列表仍包含相同的项目)。

我不能简单地将DataGridView的DataSource设置为null,然后设置为新列表,因为这会破坏格式(隐藏列变为可见,排序被取消),我必须使用BindingSource来保持配置。

有人能给我建议如何解决这个问题吗?

谢谢


我使用类似的代码,它在我的端上工作。你尝试过使用 BindingList 而不是 List 吗? - The_Black_Smurf
2
我通过将新的排序列表分配给“BindingSource.DataSource”来解决了这个问题,每次需要更新数据时都会保留格式并正常工作。 - Zbynek
你的 Skoleni 实现了 INotifyProperty 吗? - Sebastian Xawery Wiśniowiecki
1个回答

0

将您的List更改为BindableList。在Skoleni类上实现INotifyProperty


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接