[C#] Problème avec evement Command

Signaler
Messages postés
13
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
7 mai 2007
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
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

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
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