Problème d'évènement

Signaler
Messages postés
10
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
22 août 2006
-
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007
-
Voila j'ai un problème sur le gestion d'un évènement.
J'ai un fichier aspx, et un fichier .cs.
Dans le fichier aspx, j'ai une DropDownList sur le quel un évènement est appelé lorsque l'utilisateur sélectionne un itèm.
A l'aide de la méthode CreatChildControls(), j'initialise et je remplis ma DropDownList en allant chercher les donnés dans une base dans une table qui s'appel 'stage'.
Quand je tests, voici ce qu'il ce passe:
    Je sélectionne un item il appel bien l'évènement
    Je reviens sur le premier élément (et seulement sur le premier), et la il n'appel plus mon évènement.
Quelqu un peut il m'aider?
Voici le code..

/*fichier uchtml.cs*/
/***************Requete vers la table 'Stage'*****************/
Stages mesStages = new Stages();
mesStages .Query.AddResultColumn(Stages.ColumnNames.Stage_Id); /*chargement de la colonne id stage*/
mesStages.Query.AddResultColumn(Stages.ColumnNames.Titre);/*chargement de la colonneTitre */
mesStages.Query.AddOrderBy(Stages.ColumnNames.Titre, WhereParameter.Dir.ASC);/*Trie par ordre alaphabétique*/
mesStages.Query.Load();/*charegement de la requête*/

/*Parcours  des DropdownList de la page web dans la _DropDownControlList*/
protected override void CreateChildControls()
{
    foreach (DropDownList ddl in _DropDownControlList)
    {
        if (ddl.Attributes["databind"] == "listFormation") /*Recherche de l'attribut databind ayant la valeur listFormation*/
        {
            ddl .DataSource = mesStages.DefaultView;/*Afficichange des titre des stage, de la table 'stage' dans la DropDown*/
            ddl.DataTextField = Stages.ColumnNames.Titre;
            ddl .DataValueField = Stages.ColumnNames.Stage_Id;
            ddl.DataBind();
            ddl.SelectedIndexChanged += new EventHandler(Selection_Change);/*Appel de l'évenement quand l'utilisateur...*/
        }                                                                                                             /* ...sélectionne un itèms dans la liste*/
    }
}
/*Méthode appelé par l'évènement*/
protected void Selection_Change(object sender, EventArgs e)
{
    Produits prd = new Produits();

    Sessions Sess = new Sessions();
    Sess .Query.AddResultColumn(Sessions.ColumnNames.Session_Id);
    Sess.Query.AddResultColumn(Sessions.ColumnNames.Stage_Id);
    Sess.Query.AddResultColumn(Sessions.ColumnNames.DateDebut);
    Sess.Query.AddResultColumn(Sessions.ColumnNames.DateFin);

    DataColumn colDatesSessions = new DataColumn();

      foreach (DropDownList DropDown in _DropDownControlList)
      {
         if (DropDown.Attributes["databind"] = = "listFormation")
        {
            foreach (HtmlInputText InputText in _InputTextControlList)
            {
                 if (InputText.Attributes["resultQuery"] == "fee")
                 {
                    int stage_id = Int32.Parse(DropDown.SelectedValue);
                    if (prd.LoadByPrimaryKey(stage_id))
                        InputText.Value = prd .s_Prix_HT;
                  }
                }
            }
            if (DropDown.Attributes["datestages"] == "dateDebutfin")
            {
                if ( Sess .Query.Load())
               {
                        DropDown.DataSource = Sess.DefaultView;
                        colDatesSessions = Sess .AddColumn("DatesSessions", typeof(string));
                        colDatesSessions.Expression = Sessions.ColumnNames.DateDebut + " + ' - ' + " +              Sessions.ColumnNames.DateFin;
                        DropDown.DataTextField = "DatesSessions";
                        DropDown.DataBind();
                 }
              }
           }
        }
    }
}
/*page web*/

<html>
    <head></head>
   
                                                FirstElement
               
       
   
</html>
                           

8 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
je pense que tu aurais plus de chance en posant ta question sur le forum asp.net.

http://www.aspfr.com

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007

C'est seulement lorsque tu re-selectionne ton premier élément que l'evenement ne se réexécute pas... ?
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007

Si j'ai bien comprit tu as 2 DDList et dans la première tu affiches les stages et dans la deusième les periodes en fonction de la selection de la première...
Je penses que tu dois avoir un problème de viewstate car ton évenement doit te concerver l'affichage de ta deusième DDList et celà doit prendre le pa sur la restitution de l'evenement C#

Maintenant je suis pas sur il faudrait que tu demande l'avis sur aspfr car du côté C# ça doit être bon...
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
juste pour info, il ne faut pas oublier que passer l'évènement init de ta page... il est trop tard pour définir un évènement.

donc, (reprennez moi si je dis une bétise) mais dans le CreateChildControl, c'est trop tard.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007

Oui mais la création manuelle de son évenement semble être tout de même prise en charge par asp net car la première exécution fonctionne...
Peut être qu'il ne faudrait pas réinitialiser une session lors de la deusième exécution... (spéculation)
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007

Je me suis trompé l'objet sessions n'a rien à voir avec le control user, non ça doit être au niveau du viewstate
Messages postés
10
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
22 août 2006

Ok merci pour vos réponse, mais finalement j'ai mis tous ca dans la méthode protected override void onload() et la ça marche, ne me demandé pas prk mais ça marche!
Messages postés
147
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
8 décembre 2007

Je crois que sebmafate avait raison mais j'aurai bien aimé comprendre pourquoi la première exécution marchait tout de même...