Developing a row-clickable GridView
Joteke a posté un exemple très simple et bien expliqué pour développer ajouter à une gridView un événement lorsqu'on clique sur une ligne.
Ce comportement peut s'avérer en effet très utile.
L'idée est de développer un contrôle qui hérite de la gridView et de lui ajouter l'événement lorsqu'on clique sur une ligne.
Voici quelques extraits de code pour que vous compreniez l'essentiel :
1) on ajoute la propriété :
Public Property EnableRowClick() As Boolean
2) On substitue la méthode PrepareControlHierarchy afin de déclencher un évènement sur le clic d'une ligne
Protected Overrides Sub PrepareControlHierarchy()
MyBase.PrepareControlHierarchy()
If EnableRowClick Then
Dim i As Integer
For i = 0 To Rows.Count - 1
Dim argsData As String = "rc" & Rows(i).RowIndex.ToString()
Me.Rows(i).Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(Me, argsData))
Next
End If
End Sub
3) On substitue la méthode RaisePostBackEvent qui gère les évènements et on déclenche l'évènement OnRowClicked
Protected Overrides Sub RaisePostBackEvent(ByVal eventArgument As String)
If eventArgument.StartsWith("rc") Then
Dim index As Integer = Int32.Parse(eventArgument.Substring(2))
Dim args As New GridViewRowClickedEventArgs(Me.Rows(index))
OnRowClicked(args)
Else
MyBase.RaisePostBackEvent(eventArgument)
End If
End Sub
A l'utilisation, il suffit donc d'ajouter une instance de cette gridView à la page .aspx puis de gérer l'évènement :
Protected Sub myGridView1_RowClicked(ByVal sender As Object, ByVal e As SampleControls.GridViewRowClickedEventArgs)
Handles myGridView1.RowClicked
Response.Write("Index of the clicked row was: " + e.Row.RowIndex.ToString())
End Sub
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :