Accueil > Forum > > > > Configuration du control menu (a:active ou itemSelected)
Configuration du control menu (a:active ou itemSelected)
mercredi 21 janvier 2009 à 17:31:24 |
Configuration du control menu (a:active ou itemSelected)

ordiminnie
|
Bonjour, Je pose ma question aux habitués de asp.net et du controle menu. Mais les autres aussi peuvent répondre...toutes les contributions sont les bienvenues ! :-) Ma navigation est en deux parties, donc deux menus. Le premier est statique, il propose les noeuds racines de mon sitemap. Le deuxième est dynamique, il propose les noeuds de niveau 2 (les noeuds enfants donc). C'est le même principe que là. (sauf que je travaille pas en flash) J'applique un sytle <StaticMenuSelectedStyle ForeColor="red" /> à mon premier menu. Voila le problème: les items racines qui n'ont pas d'enfant restent bien en rouge uen fois que la page est chargée mais ceux qui ont des noeuds enfants reviennent en "statut" normal. Comment faire pour faire que mes noeuds parents restent en selected ? J'ai essayé cette bidouille sans succès: je mets une class <StaticMenuItemStyle cssclass="StaticMenuItemStyle" /> puis dans le css : .StaticMenuItemStyle a:active {color:red} Pour illustrer, vous pouvez voir ce site, la navigation est en flash mais j'essaie de faire le même rendu (au niveau des onglets) en .net et css. Merci !
|
|
jeudi 22 janvier 2009 à 00:14:20 |
Re : Configuration du control menu (a:active ou itemSelected)

ggtry
|
Bonsoir,
C'est normal, puisque les éléments statiques qui ont des enfants ne sont pas sélectionnés comme tels (c'est l'un de leurs enfants qui l'est). Tu peux passer par l'événément MenuItemClick et modifier l'apparence du parent lorsqu'un enfant est sélectionné. Le problème est que tu dois alors introduire l'html dans le .text de ton item (en tout cas, je ne vois pas comment faire autrement). Ca fait très bidouille, mais sur un menu à deux niveaux (1 statique, 1 dynamique), tu peux donner la même valeur au text et à la value pour le static, puis, par exemple (en changeant ici le background du static lorsque tu cliques sur le sous-menu) :
Protected Sub Menu1_MenuItemClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MenuEventArgs) For Each i As MenuItem In Menu1.Items i.Text = i.Value Next If Not e.Item.Parent Is Nothing Then e.Item.Parent.Text = "<span style='background-color:red';>" & e.Item.Parent.Text & "</span>" End If End Sub
Peut-être y a-t-il mieux, mais c'est une solution...
GGtry
|
|
jeudi 22 janvier 2009 à 11:27:06 |
Re : Configuration du control menu (a:active ou itemSelected)

ordiminnie
|
Merci ggtry,
J'ai essayé ta solution mais je me bute à un autre problème : l'évènement onmenuitemclick ne se déclenche jamais... Si quelqu'un veut bien jeter un oeil à mon code, moi je ne vois pas....
Voici mon code pour le composant Menu : <asp:Menu ID="SubMenu" runat="server" DataSourceID="SMDSsub" MaximumDynamicDisplayLevels="1" Orientation="Horizontal" DisappearAfter="-1" onmenuitemclick="SubMenu_MenuItemClick">
Puis dans le code-behind: protected void SubMenu_MenuItemClick(object sender, MenuEventArgs e) { e.Item.Parent.Text = "<span CssClass=\"StaticSelectedStyle\">" + e.Item.Parent.Text + "</span>"; }
Voilà, je ne passe jamais sur l'évènement (avec un breakpoint) quand je clique sur les éléments du menu...quelqu'un sait d'où ça peut venir ? C'est tout ce qu'il y a de plus classique il me semble...
Merci
|
|
jeudi 22 janvier 2009 à 12:36:06 |
Re : Configuration du control menu (a:active ou itemSelected)

ggtry
|
Bonjour,
Oui, désolé, je n'y avais pas pensé, mais puisque c'est un menu de navigation, tu dois avoir des navigateurl sur le sous-menu, et donc pas de postback... d'où le fait que l'événement menuitemclick n'est pas déclenché. Autre solution, dans ce cas : sur le page_load, tu peux comparer en faisant une boucle le path de tes navigateurl avec le path de la page actuelle. Si il y a correspondance, tu donnes au parent de l'item qui a le bon navigateurl le format que tu veux.
GGtry
|
|
jeudi 22 janvier 2009 à 18:35:09 |
Re : Configuration du control menu (a:active ou itemSelected)

ordiminnie
|
Ok je comprends l'idée mais je n'ai pas de navigateurl car mon menu est connecté à une SiteMapDataSource, lui-même connecté à un sitemap.... enfin j'imagine que je vais pouvoir récupérer les url du sitemap quand meme. Si tu as le nom de la fonction qui me permet de faire ça, ne te gêne pas pour me la donner ! :)
En tout cas, merci pour l'idée !
|
|
jeudi 22 janvier 2009 à 19:16:30 |
Re : Configuration du control menu (a:active ou itemSelected)

ggtry
|
Le navigateurl est en effet défini automatiquement. Sur le prerender du menu (plutôt que sur le Page_Load), tu peux essayer un truc comme cela :
For Each i As MenuItem In Menu1.Items For Each j As MenuItem In i.ChildItems If Server.MapPath(j.NavigateUrl) = Server.MapPath(Request.Path) Then j.Parent.Text = "<span style='background-color:red';>" & j.Parent.Text & "</span>" End If Next Next
GGtry
|
|
vendredi 23 janvier 2009 à 12:44:31 |
Re : Configuration du control menu (a:active ou itemSelected)
|
vendredi 23 janvier 2009 à 12:51:47 |
Re : Configuration du control menu (a:active ou itemSelected)

ordiminnie
|
Merci pour ces précisions !
J'ai cependant un problème : je n'arrive pas à accéder à un élément de menu de niveau 2 à partir du niveau 1 et vice-versa.
Pour mon menu de niveau 1 : myItem.ChildItems.Count() renvoie tj 0
Pour mon menu de niveau 2: myItem.Parent vaut tj null
Donc je ne peux pas préciser que lorsque un élément de niveau 2 est sélectionné, on doit appliquer une certaine présentation à son parent.
J'ai donc fait une boucle pour chacun des niveaux et je pensais dire à l'élément sélectionné de niveau 1 qu'il doit le rester jusqu'à ce qu'un autre élément de niveau 1 le soit. Comment formuler ça ? Je continue aussi de chercher mais si tu as une piste...
Voilà mon code:
--> pour le menu de niveau 1
protected void PrincipalMenu_PreRender(object sender, EventArgs e)
{
foreach (MenuItem myItem in PrincipalMenu.Items)
{
if ((myItem.NavigateUrl) == (Request.Path))
{
myItem.Text = "<span Style=\"color:blue;\">" + myItem.Text + "</span>";
}
else if ((myItem.NavigateUrl) == ((Request.Path) + "#"))
{
myItem.Text = "<span Style=\"color:blue;\">" + myItem.Text + "</span>";
}
}
}
--> pour le menu de niveau 2
protected void SubMenu_PreRender(object sender, EventArgs e)
{
foreach (MenuItem myItem in SubMenu.Items)
{
if ((myItem.NavigateUrl) == (Request.Path))
{
myItem.Text = "<span Style=\"color:red;\">" + myItem.Text + "</span>";
if (myItem.Parent != null) //ne rentre jamais dedans !
{
myItem.Parent.Text = "<span Style=\"color:red;\">" + myItem.Parent.Text + "</span>";
}
}
}
}
|
|
vendredi 23 janvier 2009 à 14:36:44 |
Re : Configuration du control menu (a:active ou itemSelected)

ggtry
|
Bonjour,
Je crois que je viens de comprendre que je n'avais pas compris ce que tu voulais faire... (mea culpa, je viens de regarder les liens que tu avais donné). Je pensais que tu avais un seul menu avec une partie statique et une partie dynamique. En fait, tu as deux menus distincts, c'est bien ça ? Si c'est cela, oublie ce qui a été dit jusqu'ici : avec deux menus qui n'ont qu'un seul niveau, tu n'auras ni enfant ni parent pour l'un et l'autre. En fait, je ne vois pas trop comment tu fais pour lier ton menu2 à ton menu1 (tu fais ça dans une masterpage ?) Mais si tu es capable de définir quel sous-menu doit être affiché dans ton menu2, tu dois savoir de quoi il dépend dans ton menu1 : donc, il suffit de mettre l'item en question du Menu1 à Menu1.Items(x).Selected, non ?
GGtry
|
|
vendredi 23 janvier 2009 à 15:03:02 |
Re : Configuration du control menu (a:active ou itemSelected)

ordiminnie
|
Et bien même sans comprendre, tu m'as guidé sur une bonne voie, maintenant que tu vois bien ce que je veux faire, ça va être un jeu d'enfant ! :-)
En fait pour lier mes deux menus, c facile, j'ai un seul sitemap. Mais j'ai un sitemapdatasource par menu, et je dis à l'un : tu ouvres le niveau 1 et à l'autre : tu ouvres le niveau 2. Le reste est géré par asp.net, quand j'ouvre un item du menu 1 qui a des enfants, le menu 2 les affiche.
Le tout est dans la masterpage.
Donc, si je comprends bien, j'ai deux menus mais j'ai quand même les relations parents-enfants.
Un collègue me dit que c'est sûrement que le sitemap n'est pas accessible côté client...mais il sait pas m'en dire plus...Est-ce que tu connais une classe qui me permette d'accéder au sitemap ou d'envoyer son contenu côté client ?
merci !
|
|
Cette discussion est classée dans : menu, control, active, configuration, noeuds
Répondre à ce message
Sujets en rapport avec ce message
menu [ par zaytoun ]
bonjour;je developpe un site web avec VS2005 commportant un menu (le controle menu).alors mon probleme est le suivant: je ne veux pas donner à l'utili
User Control dynamique (C#) [ par ranouf ]
Bonjour, Je cherche aussi à résoudre ce pb. J'ai mon menu qui mene à la page => "?page=employe" ou "?page=departement". Un coup je voudrai que ça m'a
Usercontrol menu categorie ? [ par Alex001 ]
Bonjour à tous,Je travail sur Dashcommerce open source et je souhaite modifié le menu catégorie.c'est un control user (*.ascx) composé d'un webcontrol
click non exécuté sur un sous un sous-menu [ par Cool_01 ]
Bonjour tout le monde,Je suis entrain de developper un site internet en utilisant ASP.NET avec C#.NETJ'ai un control Menu pour lequel je crée les Me
Control public [ par Byrong ]
Bonjour est-il possible de rendre un control public en asp vb.Net Car mon menu est dans ma page maitre et j'aimerais changer l'état des items, donc
control web ascx et liens relatif [ par liliemumue ]
Bonjour,J'utilise pour les pages mon site un control ascx qui charge le menu :( menu.ascx se trouve à la racine du site)Mon enu contient des images se
Menu Dynamique [ par cbruno ]
Bonjour à tous,Voilà je rencontre un pb avec un menu horizontal dynamique !j'ai récuperé des sources avec une base de donnée! Jusque là pas de soucis
Pb envoi d'un mail sans composant avec ASP [ par vinsator ]
Bonjour à tous,J'ai un pb avec la source asp qui s'intitule "envoi de mail en asp sans composant"(voici la source)Const cdoSendUsingMethod = "<A href=
Configuration d'une plateforme dot.net [ par leo67000 ]
J'ai Microsoft Visual Studio .NET 2003 sous Windows XP Pro et j'ai installer IIS;Lorsque je veux créer une application .NET j'ai le message d'erreur s
Activedirectory [ par tcheko225 ]
J'écris un programme qui doit communiquer avec ActiveDirectory de windows 2003 Server quand je le met il n'y'a pas d'erreur,voici le code: package rés
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|