[GridView]GridRow上DoubleClick觸發特定事件

  • 10753
  • 0
  • 2008-12-29

[GridView]GridRow上DoubleClick觸發特定事件

通常設計GridVeiw的時候,每一列上面可能會有修改或刪除的按鈕,

有可能使用RowCommand或是觸發對應的RowEditing或RowDeleting事件。

但是要更friendly一點,通常會希望在某一列doubleclick時,可以觸發特定的事件,

例如在該列double click,即可修改該列內容、導到對應的頁面、甚至跳出confirm視窗是否要刪除此筆資料等...

這邊透過註冊postback以及在onLoad()的時候去攔截,並觸發對應事件或自訂事件。

首先在RowDataBound()裡面針對每一列datarow註冊doubleclick,並將該筆rowindex記錄在postback的資訊中。

 


Protected Overrides Sub OnRowDataBound(ByVal e As GridViewRowEventArgs)
     If e.Row.RowType = DataControlRowType.DataRow Then

         e.Row.Attributes.Add("ondblclick", e.Row.Page.ClientScript.GetPostBackClientHyperlink(Me, e.Row.UniqueID & "$Row" & e.Row.RowIndex))                 

     End If

     MyBase.OnRowDataBound(e)
End Sub

 

接著在Grid的Load()裡面,去攔截該postback,並觸發特定事件。

 


Dim a As String = Me.Page.Request.Form("__EVENTTARGET")
Dim c As String = Me.Page.Request.Form("__EVENTARGUMENT")

If a IsNot Nothing Then

    If  a = Me.UniqueID AndAlso c.IndexOf("$Row") >= 0 Then

        Dim b As String() = c.Split("$")
        Me.RowEditIndex = CInt(b(b.Length - 1).Replace("Row", ""))

        Dim eEditEvent As GridViewEditEventArgs = New GridViewEditEventArgs(Me.RowEditIndex)
        Call MyBase.OnRowEditing(eEditEvent)
    End If

End If

 

以這例子,就是double click的時候,會觸發OnRowEditing的事件,且e.RowEditIndex為選到的那一筆index。

若要觸發其他自訂事件,可以自行使用Raise Event。


blog 與課程更新內容,請前往新站位置:http://tdd.best/