AJAX et boutons dynamiques

Gastaropod Messages postés 10 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 26 juin 2008 - 25 juin 2008 à 10:43
Gastaropod Messages postés 10 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 26 juin 2008 - 27 juin 2008 à 09:30
Bon, j'ai un soucis assez déroutant.

Pour mieux me faire comprendre, je vais expliquer le cheminement que parcoure mon appli afin que ce soit plus explicite.

En gros j'ai créé un système de messagerie interne pour un site web. Chaque utilisateur peut consulter ses messages, les supprimer etc. le tout ponctué d'AJAX (UpdatePanel).
Je crée dans le code serveur (Messages.aspx.vb, oui, je code en VB.net au passage :p) tous mes contrôles dynamiquement. Pour chaque messsage, je crée une mini table comprenant nom de l'utilisateur ayant envoyé le message, titre du message, un bouton pour ouvrir le message, et un CheckBox pour le selectionner (pour le supprimer ou autres options).
J'ai un contrôle principal que je met dans ma page .aspx, il s'agit d'un simple Panel, composant asp.

Lorsque je clique sur le bouton "ouvrir", je mémorise en variable de session le fait que l'utilisateur souhaite ouvrir son message (un booléen), et l'index du message ouvert en récupérant l'id du bouton.

L'évennement page_load est déclenché, mes tables sont recréées, et se voit ajouté un nouveau contrôle (lui-même un Panel), comprenant le message en lui-même, ainsi que certains boutons en fonction du type de message. Un bouton revient toujours, il s'agit du bouton "Fermer" (que je conserverais en exemple pour expliquer).

Comme il s'agit toujours des mêmes boutons, et qu'un seul message ne peut être ouvert à la fois, j'ai créé ces boutons en données membre, pour plus de simplicité, puis ai ajouté les évennements par AddHandler dans le load, sans quoi ils ne sont pas affiliés.

Mon problème apparaît après avoir cliqué sur le bouton "Ouvrir". Dès lors que j'ajoute (dans l'évennement lié à "Ouvrir") le contrôle comprenant le texte du message et les nouveaux boutons, le navigateur m'annonce qu'il y a des erreurs sur la page, et mon évennement n'est pas déclenché.

Je ne pense pas qu'il s'agisse du fait que mes évennements ne soient pas liés proprement, mais plutôt une erreur dans l'ajax, ou la création de mes contrôles.

Je m'arrache pas mal les cheveux, d'autant plus qu'il n'y a pas vraiment moyen de détecter d'où vient le problème, si ce n'est par alertes javasript, mais sachant que l'ajax que j'utilise (UpdatePanel) est du code généré par VS, je ne vois pas vraiment comment m'en sortir...

En attendant avec impatience vos réponses, je vous salue!
Gastaropod

3 réponses

Gastaropod Messages postés 10 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 26 juin 2008
25 juin 2008 à 10:46
Oui, j'ai oublié de préciser que mon problème vient lorsque j'ai déjà ouvert mon message, et que je souhaite cliquer sur un des boutons dans le message (bouton fermer par exemple).

Il me semble même que tous les boutons sont buggés dès lors que j'ai cliqué sur "Ouvrir" d'un des messages.
0
ggtry Messages postés 417 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 21 juillet 2010 1
26 juin 2008 à 21:52
Bonsoir,

Peux-tu montrer les endroits où le navigateur signale une erreur ?

GGtry
0
Gastaropod Messages postés 10 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 26 juin 2008
27 juin 2008 à 09:30
Le soucis c'est que je ne sais pas exactement pourquoi le navigateur signale une erreur.

L'erreur est signalée au moment où je clique sur un bouton qui a été ajouté après avoir déclenché un évènnement.

J'ai bien mes AddHandler dans le load mais a toujours généré une erreur.

Donc j'ai ouvert mes messages autrement, un peu comme on voit de plus en plus en ce moment pour ouvrir une photo : on voit le site, mais par dessus se colle un div qui prend toute la place sur la page, avec un fond noir avec opacité à 50%, et le message dans un div au fond blanc par dessus.

Je trouve ça sympa, et moins prise de tête puisque ça marche comme ça avec ajax :p

Pour info, j'ai une idée d'où venait l'erreur que finalement je n'ai pas résolue mais détournée, il y avait des AddHandler, et des New Button (alors que mes boutons sont des données membres) dans l'évennement déclenché par le premier bouton. Peut être que ça venait de là...
0