[C#] Problème avec evement Command

oxayotl Messages postés 13 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 7 mai 2007 - 12 juil. 2006 à 12:36
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 12 juil. 2006 à 13:55
Bonjour,
j'ai créé dynamiquement deux LinkButton contenant des panels, labels...... J'ai voulu créer un évènement Command qui, avec l'aide d'un command argument, renvoi l'ID de mon LinkButton.
               public void CreateEvents(){
                ...
                LinkButton lkbEvent = new LinkButton();
                lkbEvent.CssClass = "linkButtonEvent";
                lkbEvent.CommandArgument = dtrEvent["ID"].ToString();
                lkbEvent.Command += new CommandEventHandler(lkbEvent_Command);

Tout ça me permet de créer un nouveau panel contenant encore des labels... associé au LinkButton sur lequel j'ai cliqué.
Au premier chargement de ma page et ainsi qu'à chaque reload de la page, je réinitialise mes linkButton et je leur réaffecte le CommandEventHandler...

        if (IsPostBack)
        {
            CreateEvents();
        }

Dans mon évènement Command, je réinitialise un ID qui correspond à l'ID du LinkButton et qui me permet d'associer le bon panel avec le bon LinkButton.
    void lkbEvent_Command(object sender, CommandEventArgs e)
    {
        IDEvent = int.Parse((string)e.CommandArgument);
        CreateEvents();
    }

Mon ID

 public int IDEvent
    {
        get
        {
            if (_hdnIDEvent.Value == string.Empty)
                return 0;

            else
                return int.Parse(_hdnIDEvent.Value);
        }
        set
        {
            _hdnIDEvent.Value = value.ToString();
        }
    }
Mon problème principal c'est que si à chaque clic, je repasse bien dans mon page_Load mais je ne passe pas forcément dans mon evenement Command.
Cela est très gênant car, pour l'utilisateur, cela ressemble à un clic pour rien, comme il ne repasse pas dans mon evenement Command, la variable ID n'est pas réinistialisé et donc le panel affiché reste le même. Ce n'est qu'au clic suivant que sera pris en compte le bon ID.

Cela me choque car, pour moi à chaque clic je devrais passer dans mon évènement...

Voilà, je ne sais pas si j'ai été très compréhensible car j'ai assez de difficultés à expliquer des problèmes aussi précis.

1 réponse

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
12 juil. 2006 à 13:55
Bonjour,

je te conseille de te renseigner sur le cycle de vie des page web asp.net . Si tu rajoutes des controles à la volée tu DOIS les rajouter dans le page_init ou page_preinit sinon tu vas avoir des problèmes avec le viewstate et les événements.

<hr />Cyril - MVS - MCP
0
Rejoignez-nous