zoukankan      html  css  js  c++  java
  • datagrid点击标题进行排序

    步骤:
     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

  • 相关阅读:
    网络基础 | 等长子网划分概述
    python学习笔记(六)——异常处理
    python模块 | 随机数模块—random模块
    python模块 | 时间处理模块—datetime模块
    python学习笔记(五)——模块导入
    思科计算机网络 | 第一章路由器概念测试题(一)
    kali Linux 渗透测试 | ettercap图形界面(ARP 欺骗 + DNS欺骗)
    单例模式 | C++ | Singleton模式
    思科网络学习笔记 | 路由概念
    python学习笔记(五)——静态方法、类方法、运算符重载
  • 原文地址:https://www.cnblogs.com/weihengblogs/p/3897155.html
Copyright © 2011-2022 走看看