這裡的文章是我個人的備份。
如果要閱讀原文,請到我的主網站: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」這兩個參數的用法,
我故意把他們的狀態值,秀在畫面上。
這樣一邊運作,一邊就知道參數的內容為何

Protected Sub GridView1_Sorting() 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() 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密技#3---GridView合併儲存格後,隔行變底色(AlternatingRowStyle)
...... 寄信給我 mis2000lab (at) 雅虎.com.台灣 ................................................................................................................
ASP.NET專題實務
(文魁出版,VB版 P8187 / C#版P09027)
.............................................................................................................. 寄信給我 mis2000lab (at) 雅虎.com.台灣 ........
留言列表