[習題] GridView的排序(Sorting),自己動手寫

要自己撰寫 GridView的排序功能並不難,
只要瞭解「SortDirection」與「SortExpression」這兩個參數的用法,
就可以搞定囉!

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

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

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

 

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

應該放在 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>

 

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

    為了讓初學者瞭解:

    事件裡面 e參數的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或是其他控制項背後的運作方式,

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

 

 

 

2010/10/18補充:根據上述的技巧,提供一個補充習題

[習題]搜尋引擎 -- 自己手寫 GridView分頁、排序兩種功能。

 

 

 

 ===========================================================================

目前的書(ASP.NET專題實務 /文魁出版)只列出自己動手寫程式  100%控制 GridView的範例,

有讀者希望看見 ListView、FormView、DetailsView,也都可以自己動手打造。

到了這篇文章,算是把這四大天王的範例,都提供出來了。

 

ListView ----

FormView ----

GridView --

DetailsView --

 ===========================================================================

 

 

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

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

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

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

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

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

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

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

 

 

 

 

 

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

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

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

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估