此處備份,原始文章出處:http://www.dotblogs.com.tw/mis2000lab/archive/2009/11/04/gridview_sorting_20091104.aspx

 

 

有一位讀者朋友來信詢問這個問題,但很有趣的是:他用公司的信箱來發問。

偏偏有些公司防範很嚴密,對於坊間的免費信箱,阻擋得很嚴格。

我無法回信給他,只好在此公開。.......希望他「有緣」能見到這篇文章

 

這個功能也可以當作書本的「補充習題」

應該放在 ASP.NET專題實務 / 文魁出版第十章裡面,比較適當。

因為這一章,所有功能我都親自動手寫程式去處裡。

........................................................................................................................................

GridView的排序功能也不難寫,

但在撰寫這個功能之前,有一些基本功要先練習一下。

在練習的過程中,您就會知道該怎麼去寫?

 

首先,我們在畫面上,使用 Gridview + SqlDataSource。

然後啟用 GridView的「AutoSorting」屬性

HTML碼如下:

  • <asp:GridView ID="GridView1" runat="server" AllowPaging="True"    
  •     AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="id"    
  •     DataSourceID="SqlDataSource1" PageSize="5">  
  •     <Columns>  
  •         <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"    
  •             ReadOnly="True" SortExpression="id" />  
  •         <asp:BoundField DataField="test_time" HeaderText="test_time"    
  •             SortExpression="test_time" />  
  •         <asp:BoundField DataField="title" HeaderText="title" SortExpression="title" />  
  •         <asp:BoundField DataField="author" HeaderText="author"    
  •             SortExpression="author" />  
  •     </Columns>  
  •  </asp:GridView>  
  •   
  •   
  •  <asp:SqlDataSource ID="SqlDataSource1" runat="server"    
  •     ConnectionString="<%$ ConnectionStrings:testConnectionString %>"    
  •     SelectCommand="SELECT [id], [test_time], [title], [author] FROM [test]">  
  • </asp:SqlDataSource>  
  •         <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
                AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="id" 
                DataSourceID="SqlDataSource1" PageSize="5">
                <Columns>
                    <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" 
                        ReadOnly="True" SortExpression="id" />
                    <asp:BoundField DataField="test_time" HeaderText="test_time" 
                        SortExpression="test_time" />
                    <asp:BoundField DataField="title" HeaderText="title" SortExpression="title" />
                    <asp:BoundField DataField="author" HeaderText="author" 
                        SortExpression="author" />
                </Columns>
            </asp:GridView>
    
    
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
                SelectCommand="SELECT [id], [test_time], [title], [author] FROM [test]">
            </asp:SqlDataSource>

     

    接下來就要撰寫後置程式碼:

        為了讓初學者瞭解SortDirection」與「SortExpression」這兩個參數的用法

       我故意把他們的狀態值,秀在畫面上。

        這樣一邊運作,一邊就知道參數的內容為何

    01     Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles GridView1.Sorting
    02
    03         If ViewState("mySorting") = Nothing Then
    04             e.SortDirection = SortDirection.Ascending
    05             ViewState("mySorting") = "Ascending"
    06         Else
    07             '-- 如果目前的排序方法,已經是「正排序」,那再度按下排序欄位之後,就變成「反排序」。
    08             If ViewState("mySorting") = "Ascending" Then
    09                 e.SortDirection = SortDirection.Descending
    10                 ViewState("mySorting") = "Descending"
    11             Else
    12                 e.SortDirection = SortDirection.Ascending
    13                 ViewState("mySorting") = "Ascending"
    14             End If
    15         End If
    16
    17         TextBox1.Text = e.SortDirection.ToString()
    18
    19         TextBox2.Text = e.SortExpression.ToString()
    20
    21     End Sub

    22
    23
    24     Protected Sub GridView1_Sorted(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.Sorted
    25         '-- 參考資料:http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.gridview.sorting.aspx
    26         Label1.Text = "Sorting by <font color=red>" & GridView1.SortExpression.ToString() & "</font> in <font color=blue>" & _
    27                              GridView1.SortDirection.ToString() & "</font> order."
    28     End Sub

     

    是不是很簡單呢?

    試著自己動手寫程式,這樣做才會更瞭解 GridView或是其他控制項背後的運作方式,

    對於提昇自己能力,相當有幫助!!!!!

    例如: ADO.NET #3 (GridView + SqlDataSource)完全手寫、後置程式碼!

     

     

     .....................................................................................................................................................

     關於 GridView,我的網站上有不少補充文章,有興趣的話可以看看:

    [習題] "選取" Gridview的某一列 & 那一列對應資料表的P.K.值

    [習題]兩個SqlDataSource,共用一個 GridView

    [習題]GridView樣版內部,改用CheckBox/Radio/DropDownList(單/複選)控制項,取代TextBox

    GridView密技#1---大腸包小腸

    GridView密技#2---GridView合併儲存格

    GridView密技#3---GridView合併儲存格後,隔行變底色(AlternatingRowStyle)

     

     

     

     

     

     

     


     

     

    ......  寄信給我    mis2000lab (at) 雅虎.com.台灣 ................................................................................................................
    ASP.NET專題實務  (文魁出版,VB版 P8187 / C#版P09027

    .............................................................................................................. 寄信給我    mis2000lab (at) 雅虎.com.台灣 ........

     

    創作者介紹

    MIS2000 Lab -- ASP.NET專題實務 / 線上教學文件

    MIS2000 Lab 發表在 痞客邦 PIXNET 留言(0) 人氣()