我想在中显示自定义集合DataGridView
在 Windows 窗体应用程序中。这个自定义集合实现了ICollection
, and IEnumerable
。我已经设置了一个BindingSource
,使用集合作为 .DataSource 属性。这DataGridView
设置为使用我的BindingSource
因为它是数据源。当我使用以下命令将新项目添加到集合中时BindingSource.Add()
方法,将DataGridView
使用新项目正确更新。这BindingSource
另一方面,DataSource 不会:
MyCustomCollection myCollection = new MyCustomCollection();
myCollection.Add(myCustomObject1);
myCollection.Add(myCustomObject2);
myBindingSource.DataSource(myCollection);
myBindingSource.Add(myCustomObject3);
在上面的代码中,myBindingSource 的内部 List 包含正确数量的记录 (3),并且DataGridView
也包含三个记录,但 myCollection 仅包含两个记录。我知道更改底层 myCollection 不会更新BindingSource
or the DataGridView
,因为它不是一个BindingList<T>
,但我的印象是更新BindingSource
直接将确保 myCollection 同时更新。
有没有办法使用不是集合的集合BindingList<T>
并在与交互时更新它BindingSource
直接地?
Update:我在所有部分(Collection、BindingSource、DataGridView)中更新数据的一种方法如下:
myCollection.Add(myCustomObject3);
myBindingSource.DataSource = null;
myBindingSource.DataSource = myCollection;
我很确定有更好的方法来解决这个问题,但这是产生我期望的结果的唯一方法。
问题是填充Adaptor。当您加载表单时,Fill已为您完成。
只需确保进行重新填充,然后在任何数据更改后重置绑定,网格就会刷新。
例子 :
WorkTableAdapter.Insert(objData.XAttribute, "",
objData.YAttribute,objLoanData.Amount_IsValid, DateTime.Now, DateTime.Now);
this.WorkTableAdapter.Fill(this.POCDataSet.Work);
this.WorkBindingSource.ResetBindings(false);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)