這裡的文章是我個人的備份。
如果要閱讀原文,請到我的主網站:http://www.dotblogs.com.tw/mis2000lab/


本篇文章的原始出處(原文),位於:[習題] GridView的排序(Sorting),自己動手寫

 

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>

 

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

    為了讓初學者瞭解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或是其他控制項背後的運作方式,

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

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

目前的書(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)

 

 

 

 

 

 

 


 

 

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

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

arrow
arrow
    全站熱搜

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