2012年7月16日 星期一

GridView和排序(sorting)有關的事件

在啟用GridView的編輯功能,如果也同時使用排序功能,當進入編輯模式底下,同時又換頁的話,那麼編輯的資料欄位就會跟著改變,之前對某列的修改資料就會消失,透過手動撰寫GridView的sorting事件可以不讓使用者在編輯模式下使用排序功能。另外也使用sorting的二個重要參數(SortExpression 和 SortDirection)提供排序資訊。

◎以上程式範例AspNet47.aspx,如在頁框下不能操作,請開新視窗操作


    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Me.Label1.Text = ""
        Me.Label2.Text = ""
    End Sub
    Protected Sub GridView1_Sorting(sender As Object, e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles GridView1.Sorting
        If e.SortExpression = "class" Then
            e.Cancel = True
            Me.Label1.Text = "你沒有權限對" & e.SortExpression & "排序。"
        End If
        If Me.GridView1.EditIndex <> -1 Then
            e.Cancel = True
            Me.Label1.Text = "你尚在編輯模式,無法對" & e.SortExpression & "排序。"
        End If
    End Sub
    Protected Sub GridView1_Sorted(sender As Object, e As System.EventArgs) Handles GridView1.Sorted
        Me.Label2.Text = "目前已對" & Me.GridView1.SortExpression.ToString & "排序(" & Me.GridView1.SortDirection.ToString & ")"
    End Sub
    Protected Sub GridView1_RowEditing(sender As Object, e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GridView1.RowEditing
        If Me.GridView1.SortExpression <> Nothing Then
            Me.Label2.Text = "目前已對" & Me.GridView1.SortExpression.ToString & "排序(" & Me.GridView1.SortDirection.ToString & ")"
        End If
    End Sub
    Protected Sub GridView1_RowUpdating(sender As Object, e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating
        e.Cancel = True
        Me.GridView1.EditIndex = -1
    End Sub

這篇文章的和分頁的事件寫法很像,請參考
GridView和分頁(paging)有關的事件
一樣的觀念,就是不會的就去狂 k 猛嗑MSDN就對了
熟悉基本事件後,像這次的程式碼都是訓練自已的logic
有人對事件的概念清楚,對函數瞭若指掌
寫起來的程式碼就是比較有學問一點(不一定是簡潔有力喔)
像MSDN的內容,一開始我會覺得每個範例都寫得落落長
然後以為自已可以縮短,以為簡潔有力就很猛
慢慢的體會到MSDN裡的程式有學問的是「通用性」很強
就是直接套用到某個網頁,要修改的地方很少
就算是用換到某種語言,要轉換的通常也只是語法


有關GridView的排序問題,數字排序問題,為什麼1,10,3三個數字排序出來為1,10,3;而不是1,3,10呢?

這是資料表設計的問題,id是int類型、description是sting類型…
所以排序當然是這樣。
image

不過你看底下的排序,就算是字串也沒有發生「編號11」錯排的問題
image

喔,因為只是在DataFormatString上使用編號{0},把原來的id前加字串「編號」而已,排序的時候還是只看原來的資料 {0}
image


It’s my life live love …

芭樂子…剪完毛帥氣多了
芭樂子…剪完毛帥氣多了
嚕嚕不喜歡毛被剃光…感覺會像更像三色豆花
嚕嚕不喜歡毛被剃光…感覺會像更像三色豆花

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...
// Dnow Function