Evenement non appelé à partir d'un AddHandler

Gastaropod Messages postés 10 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 26 juin 2008 - 13 juin 2008 à 11:26
Gastaropod Messages postés 10 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 26 juin 2008 - 13 juin 2008 à 12:04
Salut à tous,

J'ai parcouru pas mal de forums, dont aspfr.com, et j'ai trouvé quelques potentielles solutions à mon problème, mais elles ne semblent pas y répondre en réalité.

Je m'explique :

J'ai une page .ASPX qui regroupe les messages d'un utilisateur (un peu comme un email, avec un titre, un émetteur, une date etc.). Pour chaque message, je crée une table asp regroupant toutes les informations du message. J'ajoute à chaque message deux boutons : un pour ouvrir le message, l'autre pour le supprimer. J'utilise donc le code suivant dans une méthode appelée par page_load :

AddHandler btnOpen.Click, AddressOf btnOpen_Click
AddHandler btnSuppr.Click, AddressOf btnSuppr_Click

Jusqu'ici tout va bien, pour chaque bouton "supprimer" ou "ouvrir", j'assigne un ID que je récupère via la valeur "sender" récupéré dans l'évennement :

Protected Sub btnOpen_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs)
Protected Sub btnSuppr_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs)

Ca marche même avec de l'AJAX (UpdatePanel pour être plus précis).

Lorsque l'on clique sur le bouton "ouvrir", dit btnOpen, un div se crée (un Panel, en fait) en dessous de la table contenant le titre, le nom de l'émeteur, la date et les boutons pour le message en question. Ainsi, je peux avoir le message en soi dynamyquement en dessous de son résumé.

Le soucis vient d'une fonctionnalité que j'ai ajoutée dernièrement. Il est possible de définir une personne en tant qu'ami. Bref, quoi qu'il en soit, quand une demande est faite, on envoie à la personne concernée un message contenant deux boutons : accepter et refuser. Ces deux boutons sont ajoutés dynamyquements lors de l'ouverture du message. Lors de leur création, j'ajoute les ligne de code suivantes:

AddHandler accept.Click, AddressOf accept_Click
AddHandler refuse.Click, AddressOf refuse_Click

Vu que l'évenement ne semblait pas déclenché quand je créais directement les boutons et leur assignait les évènements dans la méthode btnOpen_Click, j'ai parcouru tout forum pour trouver une solution.
Il semble que les évènements doivent être assignés lors du page_load, voire du init ou init_complete.

Mais j'ai eu beau créer les boutons dans le load, dans l'init ou dans le complete, les ajouter dynamyquement dans le load pour chaque demande d'amitié, et les ajouter à une Liste(Of Button), puis les récupérer, tenter, pour tester de ne les créer qu'une fois directement dans la page, et non dans un message particulier, rien à faire, les évènements accept_Click, et refuse_Click ne sont pas déclenchés...

Quelqu'un aurait-il une idée pour me sortir de ce casse-tête

1 réponse

Gastaropod Messages postés 10 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 26 juin 2008
13 juin 2008 à 12:04
J'ai noté que la page .aspx est systématiquement rechargée (page_load) dès qu'un évènement est déclenché.

Aussi, les contrôles ajoutés à la levée d'un évènement n'auront plus lieux puisque la page aura été rechargée.

Donc à part tout coder dans le page_load (variables de Session à l'appui), je ne vois pas trop comment je pourrais faire autrement...
0
Rejoignez-nous