phicot
Messages postés10Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention22 août 2006
-
21 août 2006 à 18:40
Bubuss
Messages postés147Date d'inscriptionsamedi 7 juin 2003StatutMembreDerniè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*/
Bubuss
Messages postés147Date d'inscriptionsamedi 7 juin 2003StatutMembreDerniè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...
Bubuss
Messages postés147Date d'inscriptionsamedi 7 juin 2003StatutMembreDerniè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)
phicot
Messages postés10Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention22 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!