使用DataGridView控件显示数据:
dataGridView1.DataSource = 数据源;
当数据源为数据集中的表时,可以通过修改数据集从而自动更新DataGridView控件的显示,但当数据源为泛型集合时,要通过修改数据源来实现这一点,则可以将数据源声明为System .ComponentModel .BindingList <>支持数据绑定的泛型集合。单纯地使用System.Collections.Generic.List<>会出现错误。
1、DataGridView数据绑定对比(DataTable与泛型List):
当DataGridView的DataSource是DataTable的时候,DataTable的数据改变时,DataGridView的数据会随之改变,无需重新绑定到DataGridView。
当DataGridView的DataSource是泛型List,当List的数据改变时,则需要先将DataGridView的DataSource设置为newList(),再将改变后的List赋给DataGridView的DataSource。
绑定List时,注意:切莫将DataGridView的DataSource设置为Null,否则会破坏DataGridView的列结构。
2、数据绑定后的添加删除问题:
如果要对绑定在DataGridView中的List进行数据的添加删除,先要把List转换成BindingList,再进行绑定:DataGridView.DataSource=new BindingList(newList)。否则的话会产生许多意想不到的错误。
如:初始绑定空数据后再添加数据绑定后,却取不到DataGridView.CurrentCell属性。
IList list= new List();
DataGridView.DataSource=list;//DataGridView的行不能添加删除
DataGridView.DataSource=newBindingList(list);//DataGridView的行可以添加删除(只有允许添加行、删除行)
注:
在DataGridView数据绑定时使用BindingSource中转可以起到很好的控制DataGridView数据展示的效果。
其根本思想就是将对DataGridView行列的操作转化为对BindingSource中数据集实体和属性的操作。
将需要在DataGridView展示的数据封装成一个类,类的每个属性对应着DataGridView的一列。
DataGridView增加行时只需要 给BindingSource加一个空对象,删除行时也只需要删掉BindingSource中的对象。
在Winform上凡是涉及到绑定,最好用实现了IBindingList接口的BindingList。因为IBindingList实现了窗口控件与列表对象间的双向同步。