Winform的datagridview是个很强大的控件,可用datatable, List等型的数据与之绑定显示。
可惜的是,绑定的LIst不能同步更新。
估计是为了改进List不能同步更新的问题,微软提供了另外一个类叫BindingList,用于与显示控件的同步更新。但这个类又不能与List类直接转换,因此又提供了IList接口。
综上,实现datagridview与List同步更新的思路是:
1. 定义IList接口,并用List来实现IList接口:
IList<MyClass> iList=new List<MyClass>(){......}
2.用1创建的IList接口实例来初始化BindingList实例:
BindingList<MyClass> bindList=new BindingList(iList);
3. 将绑定bindList到datagridview
dgv1.datasource=bindList;
至此,dgv1通过bindList将iList的数据显示在了dgv1上,并且,当dgv1数据更新时,数据同步更新到了bindList上。
注意此时,iList的数据并没有更新。用来更新bindList的数据到iList上,使用下bindList的ToList()方法就可以了
4.数据更新到iList:
iList=bindList.ToList()