Je charge dynamiquement un LinkButton lorsqu'un utilisateur clique sur un autre LinkButton. J'attache un gestionnaire d'événement à celui-ci. Lorsque l'utilisateur clique sur le LinkButton chargé dynamiquement, l'événement ne se déclenche pas. D'après ce que j'ai lu, je comprends que c'est parce que quand la page affiche en arrière le contrôle chargé dynamiquement n'existe plus. Il semble que je suis censé m'assurer que ce contrôle est recréé dans Page_Init.Contrôle dynamiquement chargé - comment puis-je accéder à une valeur dans Page_Init
Le LinkButton créé dynamiquement dépend d'une valeur (Product ID). J'ai besoin d'accéder à cette valeur pour pouvoir créer le contrôle correctement. ViewState n'est pas accessible et je suis inquiet si j'utilise Session, il pourrait expirer et cela n'aiderait pas. Des idées?
En outre, j'ai codé en dur une valeur d'ID de produit juste pour le test, et cela n'a toujours pas déclenché l'événement. Y a-t-il autre chose que je dois faire?
protected void Page_Init(object sender, EventArgs e)
{
SetTabText(1, 1);
}
SetTabText appelle SetActionLinks qui crée le LinkButton:
protected Panel SetActionLinks(int prodID, int tabID) {
...
LinkButton lnkBtn = new LinkButton();
lnkBtn.ID = "lnkBtn" + rand.Next().ToString();
lnkBtn.CommandName = "action";
lnkBtn.Command += new CommandEventHandler(this.lnkAction_Command);
panel.Controls.Add(lnkBtn);
...
}
void lnkAction_Command(object sender, CommandEventArgs e)
{
LinkButton btn = (LinkButton)sender;
switch (btn.CommandArgument)
{
AddCart();
}
}
J'ai changé mes événements en délégués anonymes, mais cela ne semble pas avoir changé quelque chose ... –