Personas que lo han encontrado útil: 3 de 9 - Valorar este tema

Menu (Clase)

Muestra un menú en una página de formularios Web Forms.

Espacio de nombres: System.Web.UI.WebControls
Ensamblado: System.Web (en 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
No aplicable.

El control Menu se utiliza para mostrar un menú en una página de formularios Web Forms, a menudo en combinación con un control SiteMapDataSource para explorar un sitio Web. El control Menu admite las características siguientes:

  • Enlace de datos que permite enlazar los elementos de menú del control a orígenes de datos jerárquicos.

  • Exploración del sitio mediante la integración con el control SiteMapDataSource.

  • Acceso mediante programación al modelo del objeto Menu para crear menús, rellenar elementos de menú, establecer propiedades, etc., de forma dinámica.

  • Aspecto personalizable mediante temas, imágenes definidas por el usuario, estilos y plantillas definidas por el usuario.

Cuando el usuario hace clic en un elemento de menú, el control Menu puede desplazarse a una página Web vinculada o simplemente devolver la página al servidor. Si la propiedad NavigateUrl de un elemento de menú se encuentra establecida, el control Menu se desplaza a la página vinculada; de lo contrario, devuelve la página al servidor para que la procese. De manera predeterminada, una página vinculada se muestra en la misma ventana o marco que el control Menu. Para mostrar el contenido vinculado en una ventana o un marco diferente, utilice la propiedad Target del control Menu.

NotaNota:

La propiedad Target afecta a cada elemento de menú del control. Para especificar una ventana o un marco para un elemento de menú individual, establezca directamente la propiedad Target del objeto MenuItem.

El control Menu muestra dos tipos de menús: un menú estático y un menú dinámico. El menú estático siempre se muestra en un control Menu. De manera predeterminada, los elementos de menú del nivel raíz (nivel 0) se muestran en el menú estático. Puede mostrar otros niveles de menú (submenús estáticos) dentro del menú estático estableciendo la propiedad StaticDisplayLevels. Los elementos de menú (si existe alguno) con un nivel más alto que el valor especificado por la propiedad StaticDisplayLevels se muestran en un menú dinámico. Un menú dinámico sólo aparece cuando el usuario coloca el puntero del mouse (ratón) sobre el elemento del menú primario que contiene el submenú dinámico. Los menús dinámicos desaparecen automáticamente después de cierto tiempo. Utilice la propiedad DisappearAfter para especificar esa duración.

NotaNota:

Un menú dinámico también desaparece cuando el usuario hace clic fuera del menú.

También puede limitar el número de niveles que se muestran en un menú dinámico estableciendo la propiedad MaximumDynamicDisplayLevels. Los niveles de menú superiores al valor especificado no se tienen en cuenta.

Elementos de menú

Un control Menu se compone de un árbol de elementos de menú representados por objetos MenuItem. Los elementos de menú del nivel superior (nivel 0) se denominan elementos del menú raíz. Un elemento de menú que tiene un elemento de menú primario se llama elemento de menú secundario. Todos los elementos del menú raíz se almacenan en la colección Items. Los elementos de un menú secundario se almacenan en la colección ChildItems de elementos de su menú primario.

Cada elemento de menú tiene una propiedad Text y una propiedad Value. El valor de la propiedad Text se muestra en el control Menu, mientras que la propiedad Value se utiliza para almacenar cualquier información adicional sobre el elemento de menú, tal como los datos que se pasan al evento de devolución de datos asociado al elemento de menú. Al hacer clic en un elemento de menú, éste puede llevar al usuario a otra página Web indicada por la propiedad NavigateUrl.

NotaNota:

Al hacer clic sobre un elemento de menú cuya propiedad NavigateUrl no se ha establecido, el control Menu simplemente envía la página al servidor para que la procese.

Opcionalmente, también es posible mostrar una imagen en un elemento de menú estableciendo la propiedad ImageUrl.

Para obtener más información sobre elementos de menú, vea MenuItem.

Datos estáticos

El modelo de datos más simple del control Menu es el de los elementos de menú estáticos. Para mostrar elementos de menú estáticos mediante sintaxis declarativa, primero coloque etiquetas <Items> de apertura y cierre entre las etiquetas de apertura y cierre del control Menu. A continuación, cree la estructura de menú anidando los elementos <asp:MenuItem> entre las etiquetas <Items> de apertura y cierre. Cada elemento <asp:MenuItem> representa un elemento de menú del control y se corresponde con un objeto MenuItem. Puede establecer las propiedades de cada elemento de menú estableciendo los atributos de su elemento <asp:MenuItem>. Para crear los elementos de submenú, anide elementos <asp:MenuItem> adicionales entre las etiquetas <asp:MenuItem> de apertura y cierre del elemento de menú primario.

Enlace a datos

El control Menu también se puede enlazar a datos. Para enlazar el control Menu al tipo de origen de datos adecuado, puede utilizar uno cualquiera de los dos métodos siguientes:

  • El control Menu puede utilizar cualquier control de origen de datos jerárquico, como un control XmlDataSource o un control SiteMapDataSource. Para enlazar a un control de origen de datos jerárquico, establezca la propiedad DataSourceID del control Menu en el valor ID del control de origen de datos. El control Menu se enlaza automáticamente al control de origen de datos especificado. Éste es el método recomendado para el enlace a datos.

  • El control Menu también se puede enlazar a un objeto XmlDocument. Para enlazar el control a este origen de datos, establezca la propiedad DataSource del control Menu en el origen de datos y, a continuación, llame al método DataBind.

Al enlazar a un origen de datos donde cada elemento de datos contiene varias propiedades (como un elemento XML con varios atributos), un elemento de menú muestra de manera predeterminada el valor devuelto por el método ToString del elemento de datos. En el caso de un elemento XML, el elemento de menú muestra el nombre del elemento, el cual indica la estructura subyacente del árbol de menús, pero no es muy útil en otro sentido. Un elemento de menú se puede enlazar a una propiedad específica del elemento de datos mediante la colección DataBindings, la cual permite especificar los enlaces del elemento de menú. La colección DataBindings contiene objetos MenuItemBinding que definen la relación entre un elemento de datos y el elemento de menú al que se enlaza. Puede especificar los criterios del enlace y la propiedad del elemento de datos que se va a mostrar en el nodo. Para obtener más información sobre enlaces de elementos de menú, vea MenuItemBinding.

No puede crear nodos vacíos en un control Menu estableciendo las propiedades Text o TextField en la cadena vacía (""). Establecer estas propiedades en la cadena vacía produce el mismo efecto que no establecer las propiedades. En ese caso, el control Menu crea un enlace predeterminado utilizando la propiedad DataSource. Para obtener más información, vea Técnicas de enlace de datos en páginas Web.

Personalizar la interfaz de usuario

Existen muchas maneras de personalizar el aspecto del control Menu. En primer lugar, puede especificar si el control Menu se va a representar horizontal o verticalmente estableciendo la propiedad Orientation. También puede especificar un estilo diferente (por ejemplo, tamaño y color de fuente) para cada uno de los tipos de elemento de menú.

Si utiliza hojas de estilos en cascada (CSS) para personalizar la apariencia del control, utilice estilos en línea o un archivo CSS independiente, pero no ambos. Si se utilizan ambos, se podrían producir resultados inesperados. Para obtener más información sobre cómo utilizar hojas de estilos con controles, vea Controles de servidor Web ASP.NET y estilos de CSS.

La tabla siguiente enumera los estilos de elementos de menú disponibles.

Propiedad de estilo de elemento de menú

Descripción

DynamicHoverStyle

Configuración de estilo para un elemento de menú dinámico cuando el puntero del mouse se coloca sobre él.

DynamicMenuItemStyle

Configuración de estilo para un elemento de menú dinámico individual.

DynamicMenuStyle

Configuración de estilo para un menú dinámico.

DynamicSelectedStyle

Configuración de estilo para el elemento de menú dinámico actualmente seleccionado.

StaticHoverStyle

Configuración de estilo para un elemento de menú estático cuando el puntero del mouse se coloca sobre él.

StaticMenuItemStyle

Configuración de estilo para un elemento de menú estático individual.

StaticMenuStyle

Configuración de estilo para un menú estático.

StaticSelectedStyle

Configuración de estilo para el elemento de menú estático actualmente seleccionado.

En lugar de establecer las propiedades de estilo individuales, puede especificar estilos que se aplican a los elementos de menú según su nivel utilizando las colecciones de estilos siguientes.

Colecciones de estilos para niveles

Descripción

LevelMenuItemStyles

Colección de objetos MenuItemStyle que controlan el estilo de los elementos de menú según su nivel.

LevelSelectedStyles

Colección de objetos MenuItemStyle que controlan el estilo de los elementos de menú seleccionados, según su nivel.

LevelSubMenuStyles

Colección de objetos MenuItemStyle que controlan el estilo de los elementos de submenú según su nivel.

El primer estilo de la colección corresponde al estilo de los elementos de menú del primer nivel de profundidad del árbol de menús. El segundo estilo de la colección corresponde al estilo de los elementos de menú del segundo nivel de profundidad del árbol de menús, y así sucesivamente. Esto se suele utilizar frecuentemente para generar menús de exploración similares a tablas de contenido, donde los elementos de menú de una cierta profundidad deberían tener todos el mismo aspecto, independientemente de si tienen o no submenús.

NotaNota:

Si utiliza cualquiera de las colecciones de estilos para niveles mostradas en la tabla anterior para definir el estilo del control Menu, estos valores de configuración de estilo reemplazan las propiedades de estilo de los elementos de menú individuales.

Otra manera de modificar la apariencia del control es la personalización de las imágenes que se muestran en el control Menu. Puede especificar su propia imagen personalizada para las diferentes partes del control estableciendo las propiedades que aparecen en la tabla siguiente.

Propiedad de imagen

Descripción

DynamicBottomSeparatorImageUrl

Imagen opcional que se muestra en la parte inferior de un elemento de menú dinámico para separarlo de otros elementos de menú.

DynamicPopOutImageUrl

Imagen opcional que se muestra en un elemento de menú dinámico para indicar que tiene un submenú.

DynamicTopSeparatorImageUrl

Imagen opcional que se muestra en la parte superior de un elemento de menú dinámico para separarlo de otros elementos de menú.

ScrollDownImageUrl

Imagen que aparece en la parte inferior de un elemento de menú para indicar que el usuario se puede desplazar hacia abajo para ver elementos de menú adicionales.

ScrollUpImageUrl

Imagen que aparece en la parte superior de un elemento de menú para indicar que el usuario se puede desplazar hacia arriba para ver elementos de menú adicionales.

StaticBottomSeparatorImageUrl

Imagen opcional que se muestra en la parte inferior de un elemento de menú estático para separarlo de otros elementos de menú.

StaticPopOutImageUrl

Imagen opcional que se muestra en un elemento de menú estático para indicar que tiene un submenú.

StaticTopSeparatorImageUrl

Imagen opcional que se muestra en la parte superior de un elemento de menú estático para separarlo de otros elementos de menú.

Para conseguir un control completo de la interfaz de usuario, puede definir sus propias plantillas personalizadas para el control Menu utilizando las propiedades de plantilla siguientes.

Propiedad de plantilla

Descripción

DynamicItemTemplate

Plantilla que contiene el contenido personalizado que se va a representar para un elemento de menú dinámico.

StaticItemTemplate

Plantilla que contiene el contenido personalizado que se va a representar para un elemento de menú estático.

Puede controlar la posición vertical y horizontal de un menú dinámico con respecto a su elemento de menú primario estableciendo las propiedades DynamicVerticalOffset y DynamicHorizontalOffset, respectivamente. Para controlar la sangría de los elementos de submenú estáticos dentro de un menú estático, utilice la propiedad StaticSubMenuIndent.

Eventos

El control Menu proporciona varios eventos que puede utilizar para programar. De esta manera, se puede ejecutar una rutina personalizada siempre que se produzca un evento. En la siguiente tabla se enumeran los eventos admitidos.

Evento

Descripción

MenuItemClick

Se produce cuando se hace clic en un elemento de menú. Este evento se utiliza habitualmente para sincronizar un control Menu con otro control de la página.

MenuItemDataBound

Ocurre cuando un elemento de menú se enlaza a datos. Este evento se utiliza habitualmente para modificar un elemento de menú antes de que se represente en un control Menu.

Accesibilidad

Es posible que el marcado que se representa de manera predeterminada para este control no respete los estándares de accesibilidad enunciados en las directrices prioritarias de WCAG (Instrucciones de accesibilidad a contenido Web 1.0). Para obtener detalles sobre accesibilidad compatible con este control, vea Controles y accesibilidad en ASP.NET.

El control Menu proporciona la propiedad SkipLinkText como una manera de que los lectores de pantalla omitan todo el control. Si se establece la propiedad SkipLinkText, se representa una imagen invisible con texto alternativo, lo que ofrece al usuario la opción de saltar al final del control. El lector de pantalla lee el texto alternativo en voz alta, mientras que la imagen ocupa sólo un píxel de espacio. Para un control preciso de los píxeles en la representación de la página, establezca la propiedad SkipLinkText en una cadena vacía ("") y proporcione un mecanismo propio para omitir el menú. De manera predeterminada, la propiedad SkipLinkText se establece en una cadena vacía.

TemaUbicación
Tutorial: Controlar los menús de ASP.NET mediante programaciónGenerar aplicaciones Web ASP .NET en Visual Studio
Tutorial: Mostrar un menú en páginas WebGenerar aplicaciones Web ASP .NET en Visual Studio
Cómo: Filtrar los nodos recuperados por controles SiteMapDataSource de servidor WebGenerar aplicaciones Web ASP .NET
Cómo: Configurar varios mapas de sitio y proveedores de mapas de sitioGenerar aplicaciones Web ASP .NET
Cómo: Implementar proveedores de mapas de sitio de ASP.NETGenerar aplicaciones Web ASP .NET
Cómo: Enumerar los nodos del mapa del sitio mediante programaciónGenerar aplicaciones Web ASP .NET
Cómo: Personalizar la apariencia de los controles SiteMapPath de servidor WebGenerar aplicaciones Web ASP .NET
Cómo: Mostrar los datos de mapas de sitio de controles no jerárquicos de servidor WebGenerar aplicaciones Web ASP .NET
Cómo: Agregar la función de exploración a sitios sencillosGenerar aplicaciones Web ASP .NET
Tutorial: Agregar la función de exploración de sitios WebGenerar aplicaciones Web ASP .NET en Visual Studio
Cómo: Enumerar los nodos del mapa del sitio mediante programaciónGenerar aplicaciones Web ASP .NET en Visual Studio
Cómo: Configurar varios mapas de sitio y proveedores de mapas de sitioGenerar aplicaciones Web ASP .NET en Visual Studio
Cómo: Filtrar los nodos recuperados por controles SiteMapDataSource de servidor WebGenerar aplicaciones Web ASP .NET en Visual Studio
Cómo: Personalizar la apariencia de los controles SiteMapPath de servidor WebGenerar aplicaciones Web ASP .NET en Visual Studio
Cómo: Mostrar los datos de mapas de sitio de controles no jerárquicos de servidor webGenerar aplicaciones Web ASP .NET en Visual Studio
Cómo: Agregar la función de exploración a sitios sencillosGenerar aplicaciones Web ASP .NET en Visual Studio
Cómo: Implementar proveedores de mapas de sitio de ASP.NETGenerar aplicaciones Web ASP .NET en Visual Studio
Tutorial: Agregar la función de exploración de sitios WebGenerar aplicaciones con Visual Web Developer
Tutorial: Controlar los menús de ASP.NET mediante programaciónGenerar aplicaciones Web ASP .NET en Visual Studio
Tutorial: Mostrar un menú en páginas WebGenerar aplicaciones con Visual Web Developer
Cómo: Agregar la función de navegación de sitios sencillosdv_vwdcon

El ejemplo de código siguiente muestra cómo crear un control Menu con elementos de menú estáticos utilizando sintaxis declarativa.


<%@ 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 Declarative Example</title>
</head>

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


El ejemplo de código siguiente muestra cómo enlazar el control Menu a un control SiteMapDataSource. Para que este ejemplo funcione correctamente, debe copiar los datos del mapa del sitio de ejemplo siguientes en un archivo denominado Web.sitemap.


<%@ 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>


A continuación se muestran datos del mapa del sitio de ejemplo para el ejemplo anterior.

<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>

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0
¿Te ha resultado útil?
(Caracteres restantes: 1500)
© 2013 Microsoft. Reservados todos los derechos.