Problème d'évènement

phicot Messages postés 10 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 22 août 2006 - 21 août 2006 à 18:40
Bubuss Messages postés 147 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 8 décembre 2007 - 22 août 2006 à 12:05
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

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 36
22 août 2006 à 11:03
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#]
0
Bubuss Messages postés 147 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 8 décembre 2007
22 août 2006 à 11:11
C'est seulement lorsque tu re-selectionne ton premier élément que l'evenement ne se réexécute pas... ?
0
Bubuss Messages postés 147 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 8 décembre 2007
22 août 2006 à 11:18
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...
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 36
22 août 2006 à 11:21
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#]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bubuss Messages postés 147 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 8 décembre 2007
22 août 2006 à 11:36
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)
0
Bubuss Messages postés 147 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 8 décembre 2007
22 août 2006 à 11:44
Je me suis trompé l'objet sessions n'a rien à voir avec le control user, non ça doit être au niveau du viewstate
0
phicot Messages postés 10 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 22 août 2006
22 août 2006 à 12:02
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!
0
Bubuss Messages postés 147 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 8 décembre 2007
22 août 2006 à 12:05
Je crois que sebmafate avait raison mais j'aurai bien aimé comprendre pourquoi la première exécution marchait tout de même...
0
Rejoignez-nous