Bonjour,
Pour mon site, je cherche à créer une image qu'on puisse faire défiler vers la droite ou vers la gauche à l'aide de 2 boutons fléchés. Aucun problème pour créer l'image et les 2 imagebutton qui la feront défiler.
Sur l'évènement "oncommand" des 2 imagebutton, je met à jour une variable session contenant la nouvelle valeur 'left' de mon image. Cette varaible session est ensuite reprise dans page.load pour ajuster la position de l'image.
Mais surprise : en cliquant sur un des boutons, le postback est bien géré ... mais pas de changement sur l'image. Elle reste calée sur la même position. Si je reclique, l'image se déplace. Mais après, si je change de bouton l'image continue à se déplacer dans le premier sens. Il faut cliquer une deuxième fois sur l'autre bouton pour inverser le déplacement ...
D'où la conclusion : le code 'command' est traité APRES le postback. Ma variable session n'est donc mise à jour qu'après le page.load du postback, et la nouvelle valeur n'est utilisable dans le Page.Load qu'au clic suivant. Très gênant ! J'ai testé avec une autre variable session dont le contenu est mis à jour (et concaténé) à chaque étape, et on voit clairement que l'évènement command est traité après postback. J'ai même essayé de créer un label (mis à jour par les évènements oncommand) pour récupérer la nouvelle valeur left. Le label est mis à jour ... après le page.load, et la valeur n'est donc pas plus utilisable que la variable session.
J'ai donc essayé d'intercepter dans le page.load l'ID de l'imagebutton ayant initié le postback, mais request.form("__eventtarget") ne marche pas (il semblerait que ce soit normal pour un imagebutton). Donc, pas moyen de traiter le réalignement de l'image dans page.load.
En désespoir de cause, je vais repasser par le bon vieux response.redirect pour forcer le traitement de la variable session, mais je trouve un peu idiot de relancer 2 fois la page (une fois en postback et une fois en response.redirect pour pouvoir gérer en totalité le code 'command'.
Si vous voyez une solution plus élégante, je suis preneur.
Merci d'avance