关于GridView列头点击排序
做ASP.NET Web项目开发,经常会和GridView打交道,免不了会根据需求要有列头点击排序的功能,在网上看了很多资料都没有把实例讲全,下面以linq原生语法完成点击列头排序实例:
1)在页面源码中设置AllowSorting属性为True并增加OnSorting事件,以及在绑定列中增加对应的SortExpression属性,如下图:
2)对应页面的代码中添加相关函数及排序的逻辑函数;
注意,如上图,在Page_Load事件中,需要增加一个ViewState["sort"], 用来跟踪和保存控件的状态信息,事实上就是根据这个ViewState["sort"]来完成倒序和顺序的排列过程;
这里的gvHR_Sorting调用了一个方法,而这个方法的返回值又被赋值给ViewState["sort"]
方法很简单,就是读取ViewState["sort"]的状态值,如果为顺序,则排序,并返回一个倒序的值,反之亦然。
3)页面效果验证,开始按照数据库的默认顺序读取值,然后点击列头的"年龄",则实现排序:
点击前,如上图所示,年龄未按照顺序或者倒序排列,这是数据库存贮顺序;
点击"年龄"后,数据排序为倒序,即年龄从大到小,这正好符合程序逻辑的设计。