1. 程式人生 > >GridView多列排序

GridView多列排序

今天有個需求,對gridview實現多列排序,正反都得實現,剛接觸gridView不久,不是很瞭解,琢磨了一下,得到了結局方法,記錄下來,希望能對他人有所幫助

要求對lcstage和toolname兩列排序。

多列排序實質是在對多列的<asp:TemplateField 中新增SortExpression,而GridView1_Sorting事件通過e.SortExpression.ToString()獲取要排序的欄位名稱,不用

自己單獨設定。

前臺程式碼:

<div>
         <asp:GridView ID="GridView1" runat="server" AllowSorting="True" 
            AutoGenerateColumns="False" 
            onsorting="GridView1_Sorting">
        <Columns>
                <asp:TemplateField HeaderText="ID" SortExpression="ID">
                <HeaderStyle />
                    <ItemTemplate>
                        <asp:LinkButton ID="lblRegionName" runat="server" Text='<%#Eval("ID") %>'></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Name" SortExpression="Name">
                    <ItemTemplate>
                        <asp:Label ID="lblCityName" runat="server" Text='<%#Eval("Name") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Sex" SortExpression="Sex">
                    <ItemTemplate>
                        <asp:Label ID="lblUserName" runat="server" Text='<%#Eval("Sex") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
               
            </Columns>
        </asp:GridView>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
後臺程式碼:
protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //下面兩行程式碼可要可不要,如果加上則在頁碼初始化時,預設對ID進行ASC排序,否則原樣顯示。
                //this.GridView1.Attributes.Add("SortExpression", "Name");
               // this.GridView1.Attributes.Add("SortDirection", "ASC");
                GridViewBind();
            }
        }
        private void GridViewBind()
        {
            string sortExpression = this.GridView1.Attributes["SortExpression"];
            string sortDirection = this.GridView1.Attributes["SortDirection"];
            DataTable dtBind = Data.BindData();
            if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection)))
            {
                //對datatable排序,gridview實質是對datatable排序,然後顯示
                //注意:sort的負值格式為,Name ASC,和資料庫排序格式不一樣
                dtBind.DefaultView.Sort = string.Format("{0} {1}", sortExpression, sortDirection);
            }
            
            this.GridView1.DataSource = dtBind;
            
            this.GridView1.DataBind();
        }
        //根據dataset排序查詢結果
        protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {
            //獲得要排序的列欄位名稱,如果點選ID表頭,則sortExpression="Name",注意這裡ID是元資料表頭,即datatable中表頭。
            string sortExpression = e.SortExpression.ToString();
            //給定一個排序方式
            string sortDirection = "ASC";

            if (sortExpression == this.GridView1.Attributes["SortExpression"])
            {
                sortDirection = (this.GridView1.Attributes["SortDirection"].ToString() == sortDirection ? "DESC" : "ASC");
            }

            this.GridView1.Attributes["SortExpression"] = sortExpression;
            this.GridView1.Attributes["SortDirection"] = sortDirection;

            GridViewBind();

        }
       

有圖有真相:


相關推薦

GridView排序

今天有個需求,對gridview實現多列排序,正反都得實現,剛接觸gridView不久,不是很瞭解,琢磨了一下,得到了結局方法,記錄下來,希望能對他人有所幫助 要求對lcstage和toolname兩列排序。 多列排序實質是在對多列的<asp:TemplateFiel

javascrpt超強html表格(table)指定排序

引用園區一朋友的點選某列排序,因專案需要自己改造成按多列排序 。 不多說,直接上,jquery.js本地要有的吧。直接修改本地jquey目錄,複製以下程式碼即可。 TableSorter body{font-size:12px;line-heigh

Python集合排序規則排序

今天遇到一個多列排序的問題,排序規則正反不等。接下來就讓我們來看看Python的強大之處吧 我遇到的集合是這樣的: tm_list = [{'markname': '意迪拉凱', 'sm_type': 1, 'sm_zh': 0.4}, {'markname': '盤珠小資料', 's

python sorted list 包含元組 字典 的排序

#包含字典dict的列表list的排序方法與dict的排序類似,如下: import operator x = [{'name':'homer', 'age':39}, {'name':'bart', 'age':10}, {'name':'aart', 'age':20}

python sorted list 元組 排序

在Python中可以使用sorted函式對list進行排序,但是如果排序的物件是一個包含tuple的list時,sorted函式會使用tuple的第一個元素。 如果想要使用tuple的第二個元素進行排序,可以向sorted函式傳入一個key引數,key引數必須是一個函式,輸入是list的一個元素,輸出最

查詢結果排序排序,聚合函式,查詢分組,篩選結果,select語句執行順序

對指定列進行排序 單列排序要素(order_by_list按該列排序) select col_list form table_name order by order_by_list [ASC|D

【標準答案】sort命令排序/複合條件的方法

這只是一個小問題,但是假攻略太多了,所有發出真正的答案。 資料如下: ba 11 a ab 1 b aa 1 c ba 3 d 要求:先按第一列排序,如果重複,再按第2列以數字方式排序 先看一下非常容易百度出來的錯誤答案: 第一條:   並列引數, 也就是 sort -

記錄一下Linq實現排序的問題

bubuko 訂單 金額 .com 分享圖片 記錄 方式 mage 單列 記錄一下,平時用的不多,容易忘記關鍵字 以一個訂單列表為例 , 按金額+時間方式排序 先按金額從大到小排序,如果金額相等 則按時間先後順序排序 記錄一下Linq實現多列排序的問題

基數排序keyword排序運用隊

printf mod n) key sort article name str oid 源碼例如以下: #include <stdlib.h> #include <stdio.h> typedef struct QUEUEnode* li

python維list按照某行或者某排序

import numpy as np # 隨機生成資料 data = np.random.rand(5, 3) print(data) # 取得第一列排序索引 index = np.argsort(data, 0)[:, 1] print(index) # 根據索引取資

linux sort 排序,倒排序

所有 NPU linux 字典 列表 關於 聯合 逗號 標準 轉載:https://segmentfault.com/a/1190000005713784 sort是在Linux裏非常常用的一個命令,管排序 sort將文件的每一行作為一個單位,相互比較,比較原則是從首字符向

GRIDVIEW合併單元格(合併

左邊是原始資料的顯示,右邊是應用合併列之後的效果。 從圖中可以看到,二級指標有兩列,有的行中兩列的內容一樣,有的則不一樣,如果實現如右圖所示,看起來效果會更好一些。下面就著手實現這個功能,我的實現原理很簡單,就是遍歷GridView的行和遍歷行中的單元格,如果單元格的前一列和當前列的內容相同就合

WPF 控制元件(二)ListView ListView+GridView+GridViewColumn+DisplayMemberBinding繫結資料的用法

 1、設定列表頭 ColumnHeaderContainerStyle用來設定整個列表頭的字型及其背景顏色等等。 2、設定列表內容 ItemContainerStyle用來設定列表內容的字型及其背景顏色等等。 此外,Padding可以設定邊距。 列表

vim 刪除

clas -s ctrl ctr ctrl+v ctrl+ 1-1000 -1 刪除一個文件 比如想刪除一個文件的1-1000行的前3列: gg #到文件首ctrl+v #可視塊模式999j,2l #註意是小寫的J

Sql條件排序

sel http dao 留言 .net get 創建 cat 暴力 多條件排序可以通過在order by語句後面使用case when then條件語句來實現。 select * from 表名 ORDER BY case when 條件 then 0 else 1 e

【ES】學習11-排序

nbsp order key actions color 字符串 efi 結果 literal 聚合結果的排序 默認:桶會根據 doc_count 降序排列。 內置排序: 設置按doc_count升序排序:註意order,_count GET /cars/transa

輕松Angularjs實現表格按指定排序

filter click arc 我們 點擊 ont 想要 log ner   angular表格點擊序號進行升序,再次點擊進行降序排序,在輸入框輸入信息,出現相對應數據的那一行。  html: <input type="text" ng-model="se

解決CSS3樣式column-width布局時內容被截斷、錯亂

hive css3多列 none 技術分享 技術 ive cor title log 一、問題 使用CSS3的column-width: auto | <length>屬性時,出現排列的內容被截斷,出現錯位的現象。 二、原因 需要為圖片容器設置高度,不

sql動態創建

執行sql num 設置 效果圖 class spa src .cn pan DECLARE @C CHARACTER(20) /*聲明列*/ DECLARE @NUM INT /*聲明創建指定行數*/ DECLARE @sql CHARACTER(500) /*

分別使用shell和python實現兩排序

lines 相同 要求 open 並且 lam split shel join 有一個文件1.txt如下,要求使用shell和python實現排序,先按照第一列排序,第一列相同再按照第二列排序,並且輸出到另外一個文件2.txt LZdeMacBook-Pro:~ lz$ c