博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
datagrid点击标题进行排序
阅读量:5844 次
发布时间:2019-06-18

本文共 1704 字,大约阅读时间需要 5 分钟。

步骤:

 1.页面上首先设置datagrid的AllowSorting="true",以及指定排序方法OnSortCommand="DataGrid1_SortCommand"
2.在列的header处指定排序字段如SortExpression="keyword"
3.后台cs部分本例使用了ViewState["orderBy"]来保存排序字段和规则( SetSql();是我实例中的datagrid绑定方法)
 PS:绑定datagrid后,要修改列SortExpression中相反的排序顺序

 1   protected void DataGrid1_SortCommand(object source, DataGridSortCommandEventArgs e)
 2     {
 3 
 4         ViewState["orderBy"= e.SortExpression;
 5         SetSql();
 6         //找到排序的列,并修改把它的排序属性 
 7         DataGridColumn clm = null
 8         for (int i = 0; i < DataGrid1.Columns.Count; i++)
 9         {
10             if (DataGrid1.Columns[i].SortExpression == e.SortExpression)
11             {
12                 clm = DataGrid1.Columns[i];
13                 break;
14             }
15         }
16         if (clm == nullreturn;
17 
18         if (e.SortExpression.ToLower().IndexOf("desc"> 0)
19         {
20             clm.SortExpression = e.SortExpression.ToLower().Replace("desc""asc");
21         }
22         else
23         {
24             if (e.SortExpression.ToLower().IndexOf("asc"> 0)
25             {
26                 clm.SortExpression = e.SortExpression.ToLower().Replace("asc""desc");
27             }
28             else
29             {
30                 clm.SortExpression = e.SortExpression.ToLower() + " desc";
31             }
32         }
33        
34     }

 特别提示:
i.OnSortCommand、OnSelectCommand、OnDeleteCommand和OnUpdateCommand方法是在OnItemCommand执行之后起作用。如DataGrid1_ItemCommand中的处理是要排除Header的,有必要做如下处理:
 
CodeDataGrid1_ItemCommand方法

protected void DataGrid1_ItemCommand(object source, DataGridCommandEventArgs e)
    {
        if (e.Item.ItemType !=  ListItemType.Item||e.Item.ItemType!=ListItemType.AlternatingItem)
            return;
   }

ii.排序后,重新绑定datagrid也是不可缺少的功课。
附录:
MS对DataGrid、DataList和Repeater的ListItemType,自动有AlternatingItem的解释 Even if you have not created an in your Repeater control, every other row still has an ItemType of ListItemType.. Therefore, you must check for both ListItemType.Item and ListItemType.AlternatingItem to process every

转载地址:http://lbqcx.baihongyu.com/

你可能感兴趣的文章
一元多项式相加
查看>>
commandLink/commandButton/ajax backing bean action/listener method not invoked (转)
查看>>
js计算时间差,包括计算,天,时,分,秒
查看>>
使用rsync在windows(服务端)与linux(客户端)之间同步
查看>>
软件工作的大环境
查看>>
vs2013中,自定义mvc 添加视图脚手架
查看>>
移动端Web开发调试之Chrome远程调试(Remote Debugging)
查看>>
Eclipse插件开发中的选择监听机制(Selection Provider-Listener)
查看>>
Java类加载过程及static详解
查看>>
background-color和background-image相关细节
查看>>
如何学好C#
查看>>
梅沙教育APP简单分析-版本:iOS v1.2.21-Nathaneko-佳钦
查看>>
Word中如何设置图片与段落的间距为半行
查看>>
Firefox about
查看>>
Angular - - angular.element
查看>>
美图秀秀首页界面按钮设计(二)
查看>>
nginx安装及负载均衡配置
查看>>
JQuery this和$(this)的区别及获取$(this)子元素对象的方法
查看>>
tomcat不能多次startup.sh,异常时直接,分析logs目录下的日志。
查看>>
关于分区索引与全局索引性能比较的示例
查看>>