PB avec les place holder et les menu

Résolu
happouh Messages postés 17 Date d'inscription mardi 4 juillet 2006 Statut Membre Dernière intervention 4 mai 2010 - 15 juil. 2009 à 14:25
happouh Messages postés 17 Date d'inscription mardi 4 juillet 2006 Statut Membre Dernière intervention 4 mai 2010 - 24 juil. 2009 à 11:02
Bonjour à tous!
J'ai un GROS problème que je n'arrive pas a résoudre tout seul:

Voici le contexte:
J'ai une page (projet.aspx) contenue dans une masterpage.
Cette page (projet.aspx) contient un menu et 4 lcontent place holder. Au démarrage,La page n'affiche que le menu.
Je voudrais pouvoir selectionner le placeholder à afficher en fonction de l'item selectionné dans le menu.
J'y arrive avec ce code:

___________________
protected void Menu2_MenuItemClick(object sender, MenuEventArgs e)
{

//= Convert.ToString(Session["MonMenu"]);

Session["MonMenu"] = Menu2.SelectedItem.Value;

if (Convert.ToString(Session["MonMenu"]) == "MesProjets")
{
PlaceHolder1.Visible = true;
PlaceHolder2.Visible = false;
PlaceHolder3.Visible = false;
PlaceHolder4.Visible = false;
PlaceHolder1.Controls.Clear();

Control cl = LoadControl("CUMesProjets.ascx");
PlaceHolder1.Controls.Clear();
PlaceHolder1.Controls.Add(cl);
//frameprojet.Attributes.Add("src", "MesProjets.aspx");
}
else
{.............

__________________

Seulement voila, losque que je fait une manipulation (par exemple lorsque je choisis une ligne d'un datagrid contenu dans CUMesProjets.ascx(=contentplace1) (donc valid du formulaire), tout ce recharge et je n'ai plus de content place holder de selectionné.
J'ai essayé de mettre une variable pour connaitre l'item cliqué du menu et en fonction de cela, afficher dans le onload, le bon place holder mais comme l'evenement Onload de ma page est effectuée avant le menu_onclick, j'ai toujour un décalage, c-a-d que je dois cliquer deux fois pour voir afficher ce place holder voulu.

La moindre idée sera la bienvenue.

Merci d'avance!

2 réponses

watabou Messages postés 9 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 15 juillet 2009
15 juil. 2009 à 18:07
Utilise un Update Panel en UpdateMode=Conditional dans ton ascx encadrant tes différentes manipulations, tu réaliseras ainsi un AsyncPostback, ne rechargeant que ton ascx et évitant ton problème. En plus tu y gagneras en performance.

Je te conseille aussi l'utilisation d'un MultiView plutot que de 4 Place Holder, il est fait pour ça :)


Bastien Besson
3
happouh Messages postés 17 Date d'inscription mardi 4 juillet 2006 Statut Membre Dernière intervention 4 mai 2010
24 juil. 2009 à 11:02
Merci pour ta réponse. Elle fonctionne mais j'ai eu d'autre problème liés au rafraichissement de mes requette.
J'ai donc opté pour la methode lourde: J'ai créé une page pour chaque partie de mon menu et ainsi abandonné les ascx.
Chaque Placeholder est donc devenu une page.
0
Rejoignez-nous