Bonjour,
J'ai un problème qui semble assez classique, mais pour lequel aucune des pages que j'ai trouvées ne m'a vraiment éclairé.
Ou j'ai pas tout compris, ce qui est plus que possible.
J'ai une page ASP .Net dans laquelle j'ai une GridView nue que je construis complètement dynamiquement.
Cela marche parfaitement, elle s'affiche bien comme je le désire tant que j'y colle des données textuelles venues de ma base de données.
Mais j'ai bêtement décidé de rajouter une colonne avec un ImageButton et si mon image cliquable apparaît bien sur chaque ligne de la grille, le handler d'évènement Click que j'ai associé à mon ImageButton n'est jamais appelé (alors qu'un clic sur le bouton en question me provoque bien un PostBack puisque je repasse dans le Page_Load et que je réaffiche ma page -sans sa grille parce que ce cas n'est prévu-).
J'ajoute mes boutons dans le handler d'évènement et de la manière suivants :
Bien sûr la subroutine MyLink_Click existe, mais je n'y rentre jamais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Sub MyGridViewAMoi_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Dim _myLink As ImageButton If e.Row.RowType = DataControlRowType.DataRow Then _myLink = New ImageButton _myLink.ID = "MyButton" & e.Row.RowIndex _myLink.AlternateText = "Ca va le faire !" _myLink.ImageUrl = "../images/monimage.gif" AddHandler _myLink.Click, AddressOf MyLink_Click e.Row.Cells(7).Controls.Add(_myLink) End If End Sub
Je précise que, pour diverses raisons, je reconstruis systématiquement ma grille à chaque réaffichage et je repasse donc à chaque fois dans les évènements RowDataBound qui sont bien appelés après le Page_Load (j'ai cru lire plusieurs fois que les handlers devaient être ajoutés après le Load et à chaque chargement de page).
J'y perds donc mon peu de latin.
Pourquoi ne passe-je pas mon handler ? Et que dois-je faire pour qu'il soit appelé ?
La mise en oeuvre d'une tel truc devrait être d'une simplicité quasiment biblique, mais ça marche pas pour moi.
Merci d'avance pour toute piste intéressante.
Lino
Partager