MenuItem, classe
Assembly : System.Web (dans system.web.dll)
Un contrôle Menu est composé d'une hiérarchie d'éléments de menu représentée par les objets MenuItem. Chaque élément de menu a une propriété Depth en lecture seule qui spécifie le niveau auquel l'élément de menu est affiché dans le contrôle Menu. Les éléments de menu au niveau supérieur (niveau 0) qui n'ont pas d'élément de menu parent sont appelés éléments de menu racine. Un élément de menu qui a un élément de menu parent est appelé élément de sous-menu. Tous les éléments de menu racine sont stockés dans la collection Items. Les éléments de sous-menu sont stockés dans une collection ChildItems d'un élément de menu parent. Vous pouvez accéder à un élément de menu de parent d'un élément de menu à l'aide de la propriété Parent.
Remarque |
|---|
| Les collections Items et ChildItems contiennent uniquement les éléments de menu du dernier niveau vers le bas. Pour accéder aux éléments de menu plus en bas de l'arborescence du menu, utilisez la propriété ChildItems d'un élément de menu suivant. |
Pour créer les éléments de menu d'un contrôle Menu, utilisez l'une des méthodes suivantes :
utilisez une syntaxe déclarative pour créer des éléments de menu statiques ;
utilisez un constructeur pour créer de manière dynamique des instances nouvelles de la classe MenuItem. Ces objets MenuItem peuvent ensuite être ajoutés à la collection Items ou ChildItems ;
liez le contrôle Menu à la source de données. Lorsque le contrôle Menu est lié à un contrôle SiteMapDataSource, les objets MenuItem sont créés automatiquement et correspondent aux éléments de la source de données. Pour d'autres sources de données, les objets MenuItem sont également créés automatiquement et correspondent à la structure hiérarchique de source de données. Toutefois, vous devez également utiliser la collection DataBindings pour définir les liaisons d'éléments de menu qui spécifient la relation de liaison entre un élément de menu et son élément de données correspondant.
Les éléments de menu s'affichent dans un menu statique ou dans un menu dynamique, selon leur niveau. Le menu statique s'affiche toujours dans un contrôle Menu. Par défaut, les éléments de menu au niveau supérieur (niveau 0) s'affichent dans le menu statique. Vous pouvez afficher des niveaux de menu supplémentaires (sous-menus statiques) dans le menu statique en définissant la propriété StaticDisplayLevels. Les éléments de menu (le cas échéant) avec un niveau supérieur à la valeur spécifiée par la propriété StaticDisplayLevels s'affichent dans un sous-menu dynamique. Un sous-menu dynamique n'apparaît que lorsque l'utilisateur positionne le pointeur de la souris sur l'élément de menu parent qui contient un sous-menu dynamique.
Lorsque l'utilisateur clique sur un élément de menu, le contrôle Menu peut naviguer vers une page Web liée ou simplement effectuer une publication sur le serveur. Si la propriété NavigateUrl d'un élément de menu est définie, le contrôle Menu navigue vers la page liée ; sinon, il publie la page sur le serveur pour traitement. Par défaut, une page liée s'affiche dans la même fenêtre ou frame que le contrôle Menu. Pour afficher le contenu lié dans une fenêtre ou frame différent, utilisez la propriété Target du contrôle Menu.
Remarque |
|---|
| La propriété Menu.Target affecte chaque élément de menu du contrôle. Pour spécifier une fenêtre ou frame d'un élément de menu, définissez directement la propriété Target de l'objet MenuItem. |
Chaque élément de menu a un Text et une propriété Value. La valeur de la propriété Text s'affiche dans le contrôle Menu, tandis que la propriété Value permet de stocker toutes les données supplémentaires relatives à l'élément de menu, telles que les données passées à l'événement de publication associé à l'élément de menu. Si vous définissez la propriété Text, mais que vous laissez la propriété Value non définie, la propriété Value est définie automatiquement avec la même valeur que la propriété Text. Le contraire est également vrai. Si vous définissez la propriété Value, et non la propriété Text, la propriété Text est définie automatiquement avec la même valeur que la propriété Value.
Remarque |
|---|
| Les éléments de menu au même niveau de menu doivent avoir chacun une valeur unique pour la propriété Value ; le contrôle Menu ne peut pas faire la distinction entre les différents éléments de menu au même niveau ayant la même valeur. Dans ce scénario, si l'utilisateur clique sur un élément de menu qui a une valeur en double, l'élément de menu qui apparaît en premier dans le menu est sélectionné. |
Pour afficher une info-bulle lorsque l'utilisateur positionne le pointeur de la souris sur un élément de menu, définissez la propriété ToolTip de l'élément.
Un contrôle Menu a plusieurs types d'éléments de menu. Vous pouvez contrôler le style (par exemple la taille et la couleur de la police) des différents types d'éléments de menu à l'aide des propriétés du tableau suivant.
| Propriété de style d'élément de menu | Description |
|---|---|
| Paramètres de style d'un élément de menu dynamique lorsque le pointeur de la souris est positionné sur lui. | |
| Paramètres de style d'un élément de menu dynamique. | |
| Paramètres de style d'un menu dynamique. | |
| Paramètres de style de l'élément de menu dynamique actuellement sélectionné. | |
| Paramètres de style d'un élément de menu statique lorsque le pointeur de la souris est positionné sur lui. | |
| Paramètres de style d'un élément de menu statique. | |
| Paramètres de style d'un menu statique. | |
| Paramètres de style de l'élément de menu statique actuellement sélectionné. |
Au lieu de définir les propriétés de style, vous pouvez spécifier les styles qui sont appliqués aux éléments de menu en fonction de leur niveau à l'aide des collections de styles affichées dans le tableau suivant.
| Collections de styles de niveau | Description |
|---|---|
| Collection d'objets MenuItemStyle qui contrôlent le style des éléments de menu en fonction de leur niveau. | |
| Collection d'objets MenuItemStyle qui contrôlent le style des éléments de menu sélectionnés en fonction de leur niveau. | |
| Collection d'objets MenuItemStyle qui contrôlent le style des éléments de sous-menu en fonction de leur niveau. |
Le premier style de la collection correspond au style des éléments de menu au premier niveau de profondeur de l'arborescence du menu. Le deuxième style de la collection correspond au style des éléments de menu au deuxième niveau de profondeur de l'arborescence du menu, et ainsi de suite. Ce mécanisme est le plus souvent utilisé pour générer des menus de navigation de style table des matières où les éléments de menu, à une certaine profondeur, doivent avoir la même apparence, qu'ils aient ou non des sous-menus.
Remarque |
|---|
| Si vous utilisez l'une des collections de styles de niveau répertoriées dans le tableau précédent pour définir le style du contrôle Menu, ces paramètres de style substituent les propriétés de style de l'élément de menu. |
En plus de personnaliser le style d'un élément de menu, vous pouvez également personnaliser son apparence. Vous pouvez spécifier des images personnalisées pour les différentes parties d'un élément de menu en définissant les propriétés dans le tableau suivant.
| Propriété d'image | Description |
|---|---|
| Image facultative affichée en regard du texte d'un élément de menu. | |
| Image facultative affichée dans un élément de menu pour indiquer que ce dernier a un sous-menu dynamique. | |
| Image facultative affichée en bas d'un élément de menu pour le séparer d'autres éléments de menu. |
Pour déterminer si un élément de menu est actuellement sélectionné dans un contrôle Menu, utilisez la propriété Selected. Vous pouvez également déterminer si un élément de menu est lié aux données en utilisant la propriété DataBound. Si un élément de menu est lié aux données, vous pouvez utiliser la propriété DataItem pour accéder aux valeurs de l'élément de données liées à l'élément de menu.
Pour obtenir la liste des valeurs de propriété initiales d'une instance de la classe MenuItem, consultez le constructeur MenuItem.
| Rubrique | Emplacement |
|---|---|
| Procédure pas à pas : affichage d'un menu sur des pages Web | Génération d'applications Web ASP.NET dans Visual Studio |
| Procédure pas à pas : contrôle des menus ASP.NET par programme | Génération d'applications Web ASP.NET dans Visual Studio |
| Procédure pas à pas : contrôle des menus ASP.NET par programme | Génération d'applications Web ASP.NET dans Visual Studio |
| Procédure pas à pas : affichage d'un menu sur des pages Web | Génération d'applications à l'aide de Visual Web Developer |
L'exemple de code suivant montre comment remplir un contrôle Menu avec les objets MenuItem statiques à l'aide d'une syntaxe déclarative.
<%@ Page Language="C#" %> <html> <body> <form runat="server"> <h3>MenuItem Declarative Example</h3> <!-- Use declarative syntax to create the --> <!-- menu structure. Create submenu items --> <!-- by nesting them within parent menu --> <!-- items. --> <asp:menu id="NavigationMenu" staticdisplaylevels="1" staticsubmenuindent="10" orientation="Vertical" target="_blank" runat="server"> <items> <asp:menuitem navigateurl="Home.aspx" text="Home" imageurl="Images\Home.gif" popoutimageurl="Images\Popout.jpg" tooltip="Home"> <asp:menuitem navigateurl="Music.aspx" text="Music" popoutimageurl="Images\Popout.jpg" tooltip="Music"> <asp:menuitem navigateurl="Classical.aspx" text="Classical" separatorimageurl="Images\Separator.jpg" tooltip="Classical"/> <asp:menuitem navigateurl="Rock.aspx" text="Rock" separatorimageurl="Images\Separator.jpg" tooltip="Rock"/> <asp:menuitem navigateurl="Jazz.aspx" text="Jazz" separatorimageurl="Images\Separator.jpg" tooltip="Jazz"/> </asp:menuitem> <asp:menuitem navigateurl="Movies.aspx" text="Movies" popoutimageurl="Images\Popout.jpg" tooltip="Movies"> <asp:menuitem navigateurl="Action.aspx" text="Action" separatorimageurl="Images\Separator.jpg" tooltip="Action"/> <asp:menuitem navigateurl="Drama.aspx" text="Drama" separatorimageurl="Images\Separator.jpg" tooltip="Drama"/> <asp:menuitem navigateurl="Musical.aspx" text="Musical" separatorimageurl="Images\Separator.jpg" tooltip="Musical"/> </asp:menuitem> </asp:menuitem> </items> </asp:menu> </form> </body> </html>
L'exemple de code suivant montre comment lier un contrôle Menu à un contrôle SiteMapDataSource. Lorsqu'il est lié à une source de données, le contrôle Menu crée automatiquement les objets MenuItem. Pour que cet exemple fonctionne, vous devez copier les données du plan de site ci-dessous dans un fichier nommé Web.sitemap.
<%@ Page Language="C#" %> <html> <!-- For the hover styles of the Menu control to --> <!-- work correctly, you must include this head --> <!-- element. --> <head runat="server"> </head> <body> <form runat="server"> <h3>Menu DataBinding Example</h3> <!-- Bind the Menu control to a SiteMapDataSource control. --> <asp:menu id="NavigationMenu" disappearafter="2000" staticdisplaylevels="2" staticsubmenuindent="10" orientation="Vertical" font-names="Arial" target="_blank" datasourceid="MenuSource" runat="server"> <staticmenuitemstyle backcolor="LightSteelBlue" forecolor="Black"/> <statichoverstyle backcolor="LightSkyBlue"/> <dynamicmenuitemstyle backcolor="Black" forecolor="Silver"/> <dynamichoverstyle backcolor="LightSkyBlue" forecolor="Black"/> </asp:menu> <asp:SiteMapDataSource id="MenuSource" runat="server"/> </form> </body> </html>
Ceci est un exemple de données de plan de site de l'exemple précédent.
<siteMap>
<siteMapNode url="~\Home.aspx"
title="Home"
description="Home">
<siteMapNode url="~\Music.aspx"
title="Music"
description="Music">
<siteMapNode url="~\Classical.aspx"
title="Classical"
description="Classical"/>
<siteMapNode url="~\Rock.aspx"
title="Rock"
description="Rock"/>
<siteMapNode url="~\Jazz.aspx"
title="Jazz"
description="Jazz"/>
</siteMapNode>
<siteMapNode url="~\Movies.aspx"
title="Movies"
description="Movies">
<siteMapNode url="~\Action.aspx"
title="Action"
description="Action"/>
<siteMapNode url="~\Drama.aspx"
title="Drama"
description="Drama"/>
<siteMapNode url="~\Musical.aspx"
title="Musical"
description="Musical"/>
</siteMapNode>
</siteMapNode>
</siteMap>
- AspNetHostingPermission pour opérer dans un environnement hébergé. Valeur de demande : LinkDemand ; valeur d'autorisation : Minimal
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Remarque