WinForms.DataGridView控件

使用数据绑定的方式在其中显示数据
1. 可以在设计时不添加Columns集合,指定DataSource属性后,列的出现顺序无法预料(.NET 会将该DataSource对象的全部公共属性拉上去显示),目前我也不知道是否可以预先安排;
2.可以在设计时手工添加Columns集合,并指定这些列标题的DataPropertyName属性为你想在这一列绑定的属性名称;这种方式可以达到预先安排列的出现顺序的目的。(这一方式对于数据源是DataTable对象时也是实用的,这时DataPropertyName属性对应于DataTable的列名称)

以上2种情况都无法让.NET为你自动排序,你单击列标题,不会出现排序的图标,这一排序功能估计要手工实现了。

在数据列上执行排序操作
这部分的内容非常多而且复杂,我只能就我遇到的问题慢慢的补充完整了。
我使用了数据源绑定的方式,将DataGridView绑定到一个List<>对象上,发现没法自动排序,于是手工去在事件ColumnHeaderMouseClick中实现排序代码,大致这个样子:

ColumnHeaderMouseClick事件中实现排序

在我单击列标题调试时,遭遇如下异常:
System.InvalidOperationException: DataGridView 控件必须绑定到 IBindingList 对象才能排序

查看一下MSDN,List<>果然没有实现IBindingList接口。
最后的解决方法:将数据源更改为DataTable对象,就可以自动实现排序了(以前的手工添加行也是可以自动实现排序的)。

如君所见,这似乎并未涉及到如何编写排序代码的问题;呵呵,以后遭遇到了再来补充了。

MSDN中的这2个条目(自动链接到你本地的MSDN文档)对排序问题阐述的非常清楚,有时间研究研究,最好在项目中研究,免得看了又忘了:
如何:自定义 Windows 窗体 DataGridView 控件中的排序
Windows 窗体 DataGridView 控件中的列排序模式

你可能感兴趣的:(datagridview)