Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout

Menu, classe

Remarque : cette classe est nouvelle dans le .NET Framework version 2.0.

Affiche un menu dans une page Web Forms.

Espace de noms : System.Web.UI.WebControls
Assembly : System.Web (dans system.web.dll)

[ControlValuePropertyAttribute("SelectedValue")] 
public class Menu : HierarchicalDataBoundControl, IPostBackEventHandler, INamingContainer
/** @attribute ControlValuePropertyAttribute("SelectedValue") */ 
public class Menu extends HierarchicalDataBoundControl implements IPostBackEventHandler, INamingContainer
ControlValuePropertyAttribute("SelectedValue") 
public class Menu extends HierarchicalDataBoundControl implements IPostBackEventHandler, INamingContainer

Le contrôle Menu permet d'afficher un menu dans une page Web Forms et est souvent associé à un contrôle SiteMapDataSource pour parcourir un site Web. Le contrôle Menu prend en charge les fonctionnalités suivantes :

  • Liaison de données qui permet aux éléments de menu du contrôle d'être liés aux sources de données hiérarchiques.

  • Navigation de site via l'intégration avec le contrôle SiteMapDataSource.

  • Accès par programme au modèle objet Menu pour créer des menus de manière dynamique, remplir les éléments de menu, définir les propriétés, etc.

  • Apparence personnalisable grâce aux thèmes, images, styles et modèles définis par l'utilisateur.

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.

RemarqueRemarque

La propriété 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.

Le contrôle Menu affiche deux types de menus : un menu statique et un menu dynamique. Le menu statique s'affiche toujours dans un contrôle Menu. Par défaut, les éléments de menu au niveau racine (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 menu dynamique. Un 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. Les menus dynamiques disparaissent automatiquement au bout d'un certain temps. Utilisez la propriété DisappearAfter pour spécifier la durée.

RemarqueRemarque

Un menu dynamique disparaît également lorsque l'utilisateur clique en dehors du menu.

Vous pouvez également limiter le nombre de niveaux affiché dans un menu dynamique en définissant la propriété MaximumDynamicDisplayLevels. Les niveaux de menu supérieurs à la valeur spécifiée sont ignorés.

Éléments de menu

Un contrôle Menu est composé d'une arborescence d'éléments de menu représentée par les objets MenuItem. Les éléments de menu du niveau supérieur (niveau 0) sont appelés éléments de menu racine. Un élément de menu ayant un élément de menu parent est appelé élément de menu enfant. Tous les éléments de menu racine sont stockés dans la collection Items. Les éléments de menu enfants sont stockés dans une collection ChildItems d'un élément de menu parent.

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. Lorsque vous cliquez dessus, un élément de menu peut naviguer vers une autre page Web indiquée par la propriété NavigateUrl.

RemarqueRemarque

Si la propriété NavigateUrl d'un élément de menu n'est pas définie, le contrôle Menu soumet simplement la page au serveur pour traitement lorsque vous cliquez sur l'élément de menu.

Vous pouvez aussi afficher éventuellement une image dans un élément de menu en définissant la propriété ImageUrl.

Pour plus d'informations sur les éléments de menu, consultez MenuItem.

Données statiques

Le modèle de données le plus simple du contrôle Menu correspond aux éléments de menu statiques. Pour afficher les éléments de menu statiques à l'aide d'une syntaxe déclarative, commencez par imbriquer les balises <Items> d'ouverture et de fermeture entre les balises d'ouverture et de fermeture du contrôle Menu. Ensuite, créez la structure de menu en imbriquant les éléments <asp:MenuItem> entre les balises <Items> d'ouverture et de fermeture. Chaque élément <asp:MenuItem> représente un élément de menu du contrôle et correspond à un objet MenuItem. Vous pouvez définir les propriétés de chaque élément de menu en définissant les attributs de son élément <asp:MenuItem>. Pour créer des éléments de sous-menu, imbriquez des éléments <asp:MenuItem> supplémentaires entre les balises <asp:MenuItem> d'ouverture et de fermeture de l'élément de menu parent.

Liaison de données

Le contrôle Menu peut également être lié aux données. Vous pouvez utiliser l'une des deux méthodes suivantes pour lier le contrôle Menu au type de source de données approprié :

  • Le contrôle Menu peut utiliser n'importe quel contrôle de source de données hiérarchique, par exemple un contrôle XmlDataSource ou un contrôle SiteMapDataSource. Pour effectuer une liaison à un contrôle de source de données hiérarchique, affectez à la propriété DataSourceID du contrôle Menu la valeur ID du contrôle de source de données. Le contrôle Menu se lie automatiquement au contrôle de source de données spécifié. Il s'agit de la méthode recommandée de liaison aux données.

  • Le contrôle Menu peut également être lié à un objet XmlDocument. Pour établir une liaison avec cette source de données, affectez la source de données à la propriété DataSource du contrôle Menu, puis appelez la méthode DataBind.

Lorsque vous effectuez une liaison à une source de données où chaque élément de données contient plusieurs propriétés (tel qu'un élément XML avec plusieurs attributs), un élément de menu affiche la valeur retournée par la méthode ToString de l'élément de données par défaut. Dans le cas d'un élément XML, l'élément de menu affiche le nom de l'élément, lequel affiche la structure sous-jacente de l'arborescence de menu, mais qui n'est pas très utile par ailleurs. Vous pouvez lier un élément de menu à une propriété d'élément de données spécifique en utilisant la collection DataBindings pour spécifier des liaisons d'éléments de menu. La collection DataBindings contient des objets MenuItemBinding qui définissent la relation entre un élément de données et l'élément de menu auquel il est lié. Vous pouvez spécifier les critères de liaison et la propriété de l'élément de données afficher dans le nœud. Pour plus d'informations sur les liaisons d'éléments de menu, consultez MenuItemBinding.

Vous ne pouvez pas créer de nœud vide dans un contrôle Menu en affectant aux propriétés Text ou TextField la valeur d'une chaîne vide (""). L'affectation de la valeur d'une chaîne vide à ces propriétés équivaut à ne pas définir les propriétés. Dans ce cas, le contrôle Menu crée une liaison par défaut à l'aide de la propriété DataSource. Pour plus d'informations, consultez Techniques de liaison de données de pages Web.

Personnalisation de l'interface utilisateur

Il existe plusieurs manières de personnaliser l'apparence du contrôle Menu. En premier lieu, vous pouvez spécifier si le contrôle Menu est rendu horizontalement ou verticalement en définissant la propriété Orientation. Vous pouvez également spécifier un style différent (par exemple une taille et une couleur de police) pour chacun des types d'élément de menu. Le tableau suivant répertorie les styles d'élément de menu disponibles.

Propriété de style d'élément de menu

Description

DynamicHoverStyle

Paramètres de style d'un élément de menu dynamique lorsque le pointeur de la souris est positionné sur lui.

DynamicMenuItemStyle

Paramètres de style d'un élément de menu dynamique.

DynamicMenuStyle

Paramètres de style d'un menu dynamique.

DynamicSelectedStyle

Paramètres de style de l'élément de menu dynamique actuellement sélectionné.

StaticHoverStyle

Paramètres de style d'un élément de menu statique lorsque le pointeur de la souris est positionné sur lui.

StaticMenuItemStyle

Paramètres de style d'un élément de menu statique.

StaticMenuStyle

Paramètres de style d'un menu statique.

StaticSelectedStyle

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 appliqués aux éléments de menu en fonction de leur niveau à l'aide des collections de styles suivantes.

Collections de styles de niveau

Description

LevelMenuItemStyles

Collection d'objets MenuItemStyle qui contrôlent le style des éléments de menu en fonction du niveau.

LevelSelectedStyles

Collection d'objets MenuItemStyle qui contrôlent le style des éléments de menu sélectionnés en fonction du niveau.

LevelSubMenuStyles

Collection d'objets MenuItemStyle qui contrôlent le style des éléments de sous-menu en fonction du 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.

RemarqueRemarque

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.

La personnalisation des images affichées dans le contrôle Menu est une autre manière de modifier l'apparence du contrôle. Vous pouvez spécifier votre propre image personnalisée pour les différentes parties du contrôle en définissant les propriétés affichées dans le tableau suivant.

Propriété d'image

Description

DynamicBottomSeparatorImageUrl

Image facultative affichée en bas d'un élément de menu dynamique pour le séparer d'autres éléments de menu.

DynamicPopOutImageUrl

Image facultative affichée dans un élément de menu dynamique pour indiquer qu'il a un sous-menu.

DynamicTopSeparatorImageUrl

Image facultative affichée en haut d'un élément de menu dynamique pour le séparer d'autres éléments de menu.

ScrollDownImageUrl

Image affichée en bas d'un élément de menu pour indiquer que l'utilisateur peut faire défiler les éléments vers le bas pour afficher des éléments de menu supplémentaires.

ScrollUpImageUrl

Image affichée en haut d'un élément de menu pour indiquer que l'utilisateur peut faire défiler les éléments vers le haut pour afficher des éléments de menu supplémentaires.

StaticBottomSeparatorImageUrl

Image facultative affichée en bas d'un élément de menu statique pour le séparer d'autres éléments de menu.

StaticPopOutImageUrl

Image facultative affichée dans un élément de menu statique pour indiquer qu'il a un sous-menu.

StaticTopSeparatorImageUrl

Image facultative affichée en haut d'un élément de menu statique pour le séparer d'autres éléments de menu.

Pour un contrôle complet de l'interface utilisateur, vous pouvez définir vos propres modèles personnalisés pour le contrôle Menu à l'aide des propriétés de modèle suivantes.

Propriété de modèle

Description

DynamicItemTemplate

Modèle qui contient le contenu personnalisé à rendre pour un élément de menu dynamique.

StaticItemTemplate

Modèle qui contient le contenu personnalisé à rendre pour un élément de menu statique.

Vous pouvez contrôler la position verticale et horizontale d'un menu dynamique relatif à son élément de menu parent en définissant respectivement les propriétés DynamicVerticalOffset et DynamicHorizontalOffset. Pour contrôler la mise en retrait des éléments de sous-menu statiques d'un menu statique, utilisez la propriété StaticSubMenuIndent.

Événements

Le contrôle Menu fournit plusieurs événements que vous pouvez programmer. Cela vous permet d'exécuter une routine personnalisée lorsqu'un événement se produit. Le tableau suivant répertorie les événements pris en charge.

Événement

Description

MenuItemClick

Se produit suite à un clic sur un élément de menu. Cet événement est utilisé couramment pour synchroniser un contrôle Menu avec un autre contrôle de la page.

MenuItemDataBound

Se produit lorsqu'un élément de menu est lié à des données. Cet événement est utilisé couramment pour modifier un élément de menu avant qu'il soit rendu dans un contrôle Menu.

Accessibilité

Le balisage rendu par défaut pour ce contrôle peut ne pas se conformer aux normes d'accessibilité telles que les instructions de priorité 1 d'accessibilité du contenu Web (WCAG, Web Content Accessibility Guidelines). Pour plus d'informations sur la prise en charge d'accessibilité pour ce contrôle, consultez Contrôles et accessibilité ASP.NET.

Le contrôle Menu fournit la propriété SkipLinkText afin de permettre aux lecteurs d'écran d'ignorer l'intégralité du contrôle. Si la propriété SkipLinkText est définie, une image invisible s'affiche avec un texte de remplacement afin de permettre à l'utilisateur d'accéder à la fin du contrôle. Les lecteurs d'écran lisent le texte de remplacement à haute voix ; l'image occupe uniquement un pixel. Pour un contrôle au pixel près du rendu de la page, affectez une chaîne vide ("") à la propriété SkipLinkText et fournissez votre propre mécanisme pour ignorer le menu. La propriété SkipLinkText a pour valeur par défaut la chaîne vide.

RubriqueEmplacement
Procédure pas à pas : affichage d'un menu sur des pages WebGénération d'applications Web ASP.NET dans Visual Studio
Procédure pas à pas : contrôle des menus ASP.NET par programmeGénération d'applications Web ASP.NET dans Visual Studio
Procédure pas à pas : ajout de la navigation de site à un site WebGénération d'applications Web ASP.NET dans Visual Studio
Procédure pas à pas : ajout de la navigation de site à un site WebGénération d'applications à l'aide de Visual Web Developer
Procédure pas à pas : affichage d'un menu sur des pages WebGénération d'applications à l'aide de Visual Web Developer
Comment : énumérer par programme des nœuds sitemapGénération d'applications Web ASP.NET dans Visual Studio
Comment : énumérer par programme des nœuds sitemapGénération d'applications Web ASP.NET dans Visual Studio
Comment : configurer plusieurs plans de sites et fournisseurs sitemapGénération d'applications Web ASP.NET dans Visual Studio
Comment : filtrer les nœuds récupérés par les contrôles serveur Web SiteMapDataSourceGénération d'applications Web ASP.NET dans Visual Studio
Procédure pas à pas : contrôle des menus ASP.NET par programmeGénération d'applications Web ASP.NET dans Visual Studio
Comment : personnaliser l'apparence des contrôles serveur Web SiteMapPathGénération d'applications Web ASP.NET dans Visual Studio
Comment : afficher des données sitemap dans des contrôles serveur Web non hiérarchiquesGénération d'applications Web ASP.NET dans Visual Studio
Comment : ajouter la navigation de site simpleGénération d'applications Web ASP.NET dans Visual Studio
Comment : implémenter des fournisseurs sitemap ASP.NETGénération d'applications Web ASP.NET dans Visual Studio
Comment : configurer plusieurs plans de sites et fournisseurs sitemapGénération d'applications Web ASP.NET dans Visual Studio
Comment : filtrer les nœuds récupérés par les contrôles serveur Web SiteMapDataSourceGénération d'applications Web ASP.NET dans Visual Studio
Procédure pas à pas : contrôle des menus ASP.NET par programmeGénération d'applications Web ASP.NET dans Visual Studio
Comment : personnaliser l'apparence des contrôles serveur Web SiteMapPathGénération d'applications Web ASP.NET dans Visual Studio
Comment : afficher des données sitemap dans des contrôles serveur Web non hiérarchiquesGénération d'applications Web ASP.NET dans Visual Studio
Comment : ajouter la navigation de site simpleGénération d'applications Web ASP.NET dans Visual Studio
Comment : implémenter des fournisseurs sitemap ASP.NETGénération d'applications Web ASP.NET dans Visual Studio
Comment : énumérer par programme des nœuds sitemapGénération d'applications Web ASP.NET
Comment : filtrer les nœuds récupérés par les contrôles serveur Web SiteMapDataSourceGénération d'applications Web ASP.NET
Comment : configurer plusieurs plans de sites et fournisseurs sitemapGénération d'applications Web ASP.NET
Comment : implémenter des fournisseurs sitemap ASP.NETGénération d'applications Web ASP.NET
Comment : personnaliser l'apparence des contrôles serveur Web SiteMapPathGénération d'applications Web ASP.NET
Comment : afficher des données sitemap dans des contrôles serveur Web non hiérarchiquesGénération d'applications Web ASP.NET
Comment : ajouter la navigation de site simpleGénération d'applications Web ASP.NET

L'exemple de code suivant montre comment créer un contrôle Menu avec les éléments de menu statiques à l'aide d'une syntaxe déclarative.


<%@ 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 Declarative Example</h3>
    
      <!-- Use declarative syntax to create the   -->
      <!-- menu structure. Submenu items are      -->
      <!-- created by nesting them in parent menu -->
      <!-- items.                                 -->
      <asp:menu id="NavigationMenu"
        disappearafter="2000"
        staticdisplaylevels="2"
        staticsubmenuindent="10" 
        orientation="Vertical"
        font-names="Arial" 
        target="_blank"  
        runat="server">
        
        <staticmenuitemstyle backcolor="LightSteelBlue"
          forecolor="Black"/>
        <statichoverstyle backcolor="LightSkyBlue"/>
        <dynamicmenuitemstyle backcolor="Black"
          forecolor="Silver"/>
        <dynamichoverstyle backcolor="LightSkyBlue"
          forecolor="Black"/>
      
        <items>
          <asp:menuitem navigateurl="Home.aspx" 
            text="Home"
            tooltip="Home">
            <asp:menuitem navigateurl="Music.aspx"
              text="Music"
              tooltip="Music">
              <asp:menuitem navigateurl="Classical.aspx" 
                text="Classical"
                tooltip="Classical"/>
              <asp:menuitem navigateurl="Rock.aspx"
                text="Rock"
                tooltip="Rock"/>
              <asp:menuitem navigateurl="Jazz.aspx"
                text="Jazz"
                tooltip="Jazz"/>
            </asp:menuitem>
            <asp:menuitem navigateurl="Movies.aspx"
              text="Movies"
              tooltip="Movies">
              <asp:menuitem navigateurl="Action.aspx"
                text="Action"
                tooltip="Action"/>
              <asp:menuitem navigateurl="Drama.aspx"
                text="Drama"
                tooltip="Drama"/>
              <asp:menuitem navigateurl="Musical.aspx"
                text="Musical"
                tooltip="Musical"/>
            </asp:menuitem>
          </asp:menuitem>
        </items>
      
      </asp:menu>

    </form>
  </body>
</html>


L'exemple de code suivant montre comment lier le contrôle Menu à un contrôle SiteMapDataSource. 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
  • AspNetHostingPermission  pour opérer dans un environnement hébergé. Valeur de demande : InheritanceDemand ; valeur d'autorisation : Minimal

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

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.

.NET Framework

Prise en charge dans : 2.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft