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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM