Bonjour,
J'ai une page qui se déroule en 3 étapes.
La 1ere, le client choisi son entrée parmi la liste des entrées, la 2eme son plat et enfin la 3eme son dessert.
Pour gérer ces 3 étapes, je crée plusieurs ImageButton correspondant à mes produits de ma 1ere étape dynamiquement depuis mon code C# à qui je lui lie un ID, une imageURL et un évènement (commun à tous). Et enfin je lie mon Imagebutton à mon panel
Code C# :
monPanel.Controls.Clear();
foreach (Produits prod in lstProduit)
{
ImageButton imgBtn = new ImageButton();
imgBtn.ID = prod.idProduit;
imgBtn.ImageUrl = urlFamImage;
imgBtn.ToolTip = prod.nom;
imgBtn.Click += new ImageClickEventHandler(imgBtn_Click);
monPanel.Controls.Add(imgBtn);
}
et dans mon évènement imgBtn_Click(), je récupère l'ID de mon ImageButton pour faire tout mon traitement et je termine par repeindre complétement ma page dynamiquement (dont les ImageButton) en passant à l'étape suivante (numéro d'étape passé en variable session).
Jusqu'ici tout marche nikel.
Cependant, si l'utilisateur se trouve à l'étape 2 ou 3 et clic sur le bouton Précédent du navigateur, le navigateur me réaffiche ma page comme elle était à l'étape précédente, seulement mes ImageButton on perdu leurs évènements! Et du coup, si l'utilisateur clic dessus, on va repasser dans le page_load mais pas dans son évènement et ca va me faire n'importe quoi.
J'ai remarqué que les ImageButton créé en dur dans le .aspx ne perdent pas leurs évènements en cas de clic sur le bouton Précédent du navigateur
ex:
Code ASP.NET :
<asp:ImageButton ID="imgBtn" runat="server" OnClick="imgBtn_Click" ImageUrl="maPhoto.jpg"/>
Mais je suis obligé de les créer dynamiquement dans mon cas.
Si quelqu'un sait comment faire garder l'évènement à mon ImageButton, ou empêcher l'utilisateur de cliquer sur le bouton Précédent sans javascript loufoque (car destiné aux entreprise qui désactivent le javascript de leurs navigateurs!)...
Merci d'avance