MenuItem Classe

Définition

Représente un élément de menu affiché dans le contrôle Menu. Cette classe ne peut pas être héritée.

public ref class MenuItem sealed : ICloneable, System::Web::UI::IStateManager
public sealed class MenuItem : ICloneable, System.Web.UI.IStateManager
type MenuItem = class
    interface IStateManager
    interface ICloneable
Public NotInheritable Class MenuItem
Implements ICloneable, IStateManager
Héritage
MenuItem
Implémente

Exemples

L’exemple suivant montre comment remplir un Menu contrôle avec des objets statiques MenuItem à l’aide de la syntaxe déclarative.


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>MenuItem Declarative Example</title>
</head>
<body>
    <form id="form1" 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>

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>MenuItem Declarative Example</title>
</head>
<body>
    <form id="form1" 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 suivant montre comment lier un Menu contrôle à un SiteMapDataSource contrôle. Lorsqu’il est lié à une source de données, le Menu contrôle crée automatiquement les MenuItem objets. Pour que cet exemple fonctionne correctement, vous devez copier les exemples de données de carte de site ci-dessous dans un fichier nommé Web.plan.


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

  <!-- For the hover styles of the Menu control to  -->
  <!-- work correctly, you must include this head   -->
  <!-- element.                                     -->
  <head runat="server">
    <title>Menu DataBinding Example</title>
</head>

  <body>
    <form id="form1" 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>

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

  <!-- For the hover styles of the Menu control to  -->
  <!-- work correctly, you must include this head   -->
  <!-- element.                                     -->
  <head runat="server">
    <title>Menu DataBinding Example</title>
</head>

  <body>
    <form id="form1" 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>

Voici un exemple de données de mappage de site pour 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>

Remarques

Un Menu contrôle est constitué d’une hiérarchie d’éléments de menu représentés par MenuItem des objets. Chaque élément de menu a une propriété en lecture seule Depth qui spécifie le niveau auquel l’élément de menu est affiché dans le Menu contrôle. 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é sous-menu. Tous les éléments de menu racine sont stockés dans la Items collection. Les éléments de sous-menu sont stockés dans la collection de l’élément de ChildItems menu parent. Vous pouvez accéder à l’élément de menu parent d’un élément de menu à l’aide de la Parent propriété.

Notes

Les Items collections et ChildItems les collections contiennent uniquement les éléments de menu pour le niveau suivant vers le bas. Pour accéder aux éléments de menu plus loin dans l’arborescence de menus, utilisez la ChildItems propriété d’un élément de menu suivant.

Pour créer les éléments de menu d’un Menu contrôle, utilisez l’une des méthodes suivantes :

Utilisez la syntaxe déclarative pour créer des éléments de menu statiques.

Utilisez un constructeur pour créer dynamiquement de nouvelles instances de la MenuItem classe. Ces MenuItem objets peuvent ensuite être ajoutés à la collection ou ChildItems à la Items collection.

Lier le Menu contrôle à une source de données. Lorsque le Menu contrôle est lié à un SiteMapDataSource contrôle, MenuItem les objets sont automatiquement créés qui correspondent aux éléments de la source de données. Pour d’autres sources de données, MenuItem les objets sont également créés automatiquement qui correspondent à la structure hiérarchique de la source de données. Toutefois, vous devez également utiliser la DataBindings collection 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 sont affichés dans un menu statique ou un menu dynamique, selon son niveau. Le menu statique est toujours affiché dans un Menu contrôle. Par défaut, les éléments de menu au niveau supérieur (niveau 0) sont affichés dans le menu statique. Vous pouvez afficher des niveaux de menu supplémentaires (sous-menu statique) dans le menu statique en définissant la StaticDisplayLevels propriété. Les éléments de menu (le cas échéant) avec un niveau supérieur à la valeur spécifiée par la StaticDisplayLevels propriété sont affichés dans un sous-menu dynamique. Un sous-menu dynamique s’affiche uniquement 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 Menu contrôle peut accéder à une page Web liée ou simplement publier sur le serveur. Si la NavigateUrl propriété d’un élément de menu est définie, le Menu contrôle accède à la page liée ; sinon, il publie la page sur le serveur pour le traitement. Par défaut, une page liée s’affiche dans la même fenêtre ou cadre que le Menu contrôle. Pour afficher le contenu lié dans une autre fenêtre ou cadre, utilisez la Target propriété du Menu contrôle.

Notes

La Menu.Target propriété affecte chaque élément de menu du contrôle. Pour spécifier une fenêtre ou un cadre pour un élément de menu individuel, définissez directement la Target propriété de l’objet MenuItem .

Chaque élément de menu a une Text propriété et une Value propriété. La valeur de la Text propriété est affichée dans le Menu contrôle, tandis que la Value propriété est utilisée pour stocker des données supplémentaires sur l’élément de menu, telles que les données transmises à l’événement de publication associé à l’élément de menu. Si vous définissez la propriété, mais laissez la Text Value propriété non définie, la Value propriété est automatiquement définie avec la même valeur que la Text propriété. Le contraire est également vrai. Si vous définissez la Value propriété, mais pas la Text propriété, la Text propriété est automatiquement définie avec la même valeur que la Value propriété.

Notes

Les éléments de menu au même niveau de menu doivent chacun avoir une valeur unique pour la Value propriété; le Menu contrôle ne peut pas faire la distinction entre différents éléments de menu au même niveau qui ont 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é de ToolTip l’élément.

Un Menu contrôle a plusieurs types d’éléments de menu différents. Vous pouvez contrôler le style (par exemple, la taille et la couleur) 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
DynamicHoverStyle Paramètres de style d’un élément de menu dynamique lorsque le pointeur de la souris est positionné sur celui-ci.
DynamicMenuItemStyle Paramètres de style d’un élément de menu dynamique individuel.
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 celui-ci.
StaticMenuItemStyle Paramètres de style pour un élément de menu statique individuel.
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 individuelles, vous pouvez spécifier des styles 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
LevelMenuItemStyles Collection d’objets MenuItemStyle qui contrôlent le style des éléments de menu en fonction de leur niveau.
LevelSelectedStyles Collection d’objets MenuItemStyle qui contrôlent le style des éléments de menu sélectionnés en fonction de leur niveau.
LevelSubMenuStyles 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 dans l’arborescence de menus. Le deuxième style de la collection correspond au style des éléments de menu au deuxième niveau de profondeur dans l’arborescence de menus, et ainsi de suite. Ceci 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 des sous-menus.

Notes

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 Menu contrôle, ces paramètres de style remplacent les propriétés de style d’élément de menu individuelles.

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.

Image, propriété Description
ImageUrl Image facultative affichée en regard du texte d’un élément de menu.
PopOutImageUrl Image facultative affichée dans un élément de menu pour indiquer que l’élément de menu a un sous-menu dynamique.
SeparatorImageUrl Image facultative affichée en bas d’un élément de menu pour la séparer d’autres éléments de menu.

Pour déterminer si un élément de menu est actuellement sélectionné dans un Menu contrôle, utilisez la Selected propriété. Vous pouvez également déterminer si un élément de menu est lié aux données à l’aide de la DataBound propriété. Si un élément de menu est lié aux données, vous pouvez utiliser la DataItem propriété pour accéder aux valeurs de l’élément de données lié à 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.

Constructeurs

MenuItem()

Initialise une nouvelle instance de la classe MenuItem sans texte de menu ni valeur.

MenuItem(String)

Initialise une nouvelle instance de la classe MenuItem avec le texte de menu spécifié.

MenuItem(String, String)

Initialise une nouvelle instance de la classe MenuItem avec le texte de menu et la valeur spécifiés.

MenuItem(String, String, String)

Initialise une nouvelle instance de la classe MenuItem à l'aide du texte de menu, de la valeur et de l'URL spécifiés sur une image.

MenuItem(String, String, String, String)

Initialise une nouvelle instance de la classe MenuItem à l'aide du texte de menu, de la valeur et de l'URL d'image et de navigation spécifiés.

MenuItem(String, String, String, String, String)

Initialise une nouvelle instance de la classe MenuItem à l'aide du texte de menu, de la valeur et de l'URL d'image et de navigation et de la cible spécifiés.

Propriétés

ChildItems

Obtient un objet MenuItemCollection qui contient les éléments de sous-menu de l'élément de menu actuel.

DataBound

Obtient une valeur indiquant si l'élément de menu a été créé via la liaison de données.

DataItem

Obtient l'élément de données lié à l'élément de menu.

DataPath

Obtient le chemin d'accès aux données lié à l'élément de menu.

Depth

Obtient le niveau auquel un élément de menu s'affiche.

Enabled

Obtient ou définit une valeur qui indique si l'objet MenuItem est activé, ce qui permet à l'élément d'afficher une image contextuelle et tous les éléments de menu enfants.

ImageUrl

Obtient ou définit l'URL à une image qui s'affiche en regard du texte d'un élément de menu.

NavigateUrl

Obtient ou définit l'URL vers laquelle accéder lors d'un clic sur l'élément de menu.

Parent

Obtient l'élément de menu parent de l'élément de menu actuel.

PopOutImageUrl

Obtient ou définit l'URL à une image qui s'affiche dans un élément de menu pour indiquer que l'élément de menu a un sous-menu dynamique.

Selectable

Obtient ou définit une valeur qui indique si l'objet MenuItem peut être sélectionné, ou s'il est « interactif. »

Selected

Obtient ou définit une valeur qui indique si l'élément de menu actuel est sélectionné dans un contrôle Menu.

SeparatorImageUrl

Obtient ou définit l'URL à une image affichée en bas d'un élément de menu pour le séparer des autres éléments de menu.

Target

Obtient ou définit la fenêtre ou frame cible dans lequel afficher le contenu de la page web associé à un élément de menu.

Text

Obtient ou définit le texte affiché pour l'élément de menu dans un contrôle Menu.

ToolTip

Obtient ou définit le texte info-bulle de l'élément de menu.

Value

Obtient ou définit une valeur non affichée utilisée pour stocker des données supplémentaires relatives à l'élément de menu, par exemple les données utilisées pour la gestion des événements de publication (postback).

ValuePath

Obtient le chemin allant de l'élément de menu racine à l'élément de menu actuel.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

ICloneable.Clone()

Crée une copie de l'objet MenuItem en cours.

IStateManager.IsTrackingViewState

Obtient une valeur qui indique si l'objet MenuItem enregistre les modifications apportées à son état d'affichage.

IStateManager.LoadViewState(Object)

Charge l'état d'affichage précédemment enregistré de l'élément de menu.

IStateManager.SaveViewState()

Enregistre les modifications d'état d'affichage apportées à un Object.

IStateManager.TrackViewState()

Demande à l’objet MenuItem d'assurer le suivi des modifications apportées à son état d'affichage.

S’applique à

Voir aussi