Exportar (0) Imprimir
Expandir todo

MenuItemBinding (Clase)

Actualización: noviembre 2007

Define la relación entre un elemento de datos y el elemento de menú al que está enlazado en un control Menu. Esta clase no puede heredarse.

Espacio de nombres:  System.Web.UI.WebControls
Ensamblado:  System.Web (en System.Web.dll)

[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public sealed class MenuItemBinding : IStateManager, 
	ICloneable, IDataSourceViewSchemaAccessor
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal) */
public final class MenuItemBinding implements IStateManager, 
	ICloneable, IDataSourceViewSchemaAccessor
public final class MenuItemBinding implements IStateManager, ICloneable, IDataSourceViewSchemaAccessor

Cuando el control Menu está enlazado a un origen de datos en que cada elemento de datos contiene varios campos (por ejemplo, un elemento XML con varios atributos), si no se definen enlaces de elemento de menú, un elemento de menú muestra el valor que el método ToString() devuelve al elemento de datos, de manera predeterminada. En el caso de un elemento XML, el elemento de menú muestra el nombre del elemento, que a su vez muestra la estructura del menú, pero no tiene mucha utilidad aparte de esto. Las propiedades de un elemento de menú se pueden enlazar a un campo determinado especificando enlaces de elemento de menú. Un objeto MenuItemBinding define la relación entre cada elemento de datos y el elemento de menú al que está enlazado.

e4ds8392.alert_note(es-es,VS.90).gifNota:

Cuando el control Menu está enlazado a un control SiteMapDataSource, los enlaces de elemento de menú no tienen efecto alguno. El enlace se realiza automáticamente utilizando el proveedor del mapa del sitio.

El control Menu almacena sus objetos MenuItemBinding en la propiedad DataBindings y aplica los enlaces al origen de datos para crear una relación de uno a uno entre la jerarquía de menús y la jerarquía del origen de datos. Para cada uno de los datos del origen de datos, el control Menu trata de hacer coincidir el elemento de datos con un objeto MenuItemBinding para crear el objeto MenuItem correspondiente.

Cuando cree un objeto MenuItemBinding debe especificar los criterios para el enlace. Los criterios indican cuándo se debe enlazar un elemento de datos a un elemento de menú. Puede especificar la propiedad Depth, la propiedad DataMember, o ambas.

La profundidad de un elemento de menú especifica el nivel del menú que se enlaza. Por ejemplo, la siguiente declaración MenuItemBinding enlaza los campos Nombre e Id. del origen de datos a las propiedades Text y Value respectivamente, de todos los nodos con una profundidad de 0:

<asp:MenuItemBinding Depth="0" TextField="Name" ValueField="ID">

Un miembro de los datos especifica el tipo de elemento de datos del origen de datos subyacente, pero puede representar distinta información dependiendo del origen de datos. Cada elemento de datos de un origen de datos jerárquico (representado por un objeto IHierarchyData) expone una propiedad Type, que especifica el tipo de elemento de datos. Por ejemplo, el miembro de datos de un elemento XML especifica el nombre del elemento. Si un origen de datos contiene varios tipos de elementos de datos, el miembro de datos especifica cuál se debe utilizar. La siguiente declaración MenuItemBinding enlaza los elementos <Book> de un control XmlDataSource a todos los elementos de menú del menú, independientemente de la ubicación en la jerarquía:

<asp:MenuItemBinding DataMember="Book" TextField="Title" ValueField= "ISBN">

En ocasiones, puede ser necesario crear un enlace de elemento de menú que especifique una profundidad y un miembro de datos. Éste es el caso cuando el origen de datos contiene elementos en distintos niveles con el mismo valor de miembro de datos. Por ejemplo, puede haber elementos <Item> que aparezcan en distintos niveles en un archivo XML. En las siguientes declaraciones MenuItemBinding se muestra cómo especificar enlaces de elementos de menú que se aplican a miembros de datos idénticos en distintas profundidades de menú:

<asp:MenuItemBinding DataMember="Item" Depth="1" TextField="Title">

<asp:MenuItemBinding DataMember="Item" Depth="2" TextField="ISBN">

Si se define un enlace de elemento de menú sin una profundidad y un miembro de datos, el enlace de elemento de menú se aplica a todos los elementos del menú. Normalmente, esto sucede cuando todos los elementos de datos tienen las mismas propiedades y deben aparecer de la misma manera, independientemente de la profundidad de menú.

Una vez que se han establecido los criterios de enlace, se puede enlazar una propiedad de un objeto MenuItem que se puede enlazar a un valor. Se puede enlazar a un campo de un elemento de datos o a un valor estático. Cuando se enlazan a un valor estático, todos los objetos MenuItem a los que se aplica el objeto MenuItemBinding comparten el mismo valor. Las propiedades enlazadas a campos contienen los valores del campo correspondiente del origen de datos.

e4ds8392.alert_note(es-es,VS.90).gifNota:

Puede reemplazar de manera selectiva una propiedad enlazada en un objeto MenuItem estableciendo la propiedad correspondiente directamente.

En la siguiente tabla se enumeran las propiedades de la clase MenuItemBinding que le permiten enlazar una propiedad del objeto MenuItem a un campo de un elemento de datos.

Propiedad

Descripción

ImageUrlField

Campo al que se debe enlazar la propiedad ImageUrl de un objeto MenuItem.

NavigateUrlField

Campo al que se debe enlazar la propiedad NavigateUrl de un objeto MenuItem.

TextField

Campo al que se debe enlazar la propiedad Text de un objeto MenuItem.

ToolTipField

Campo al que se debe enlazar la propiedad ToolTip de un objeto MenuItem.

ValueField

Campo al que se debe enlazar la propiedad Value de un objeto MenuItem.

En la siguiente tabla se enumeran las propiedades de la clase MenuItemBinding que le permiten enlazar una propiedad del objeto MenuItem a un valor estático.

Propiedad

Descripción

ImageUrl

Valor estático al que se debe enlazar la propiedad ImageUrl de un objeto MenuItem.

NavigateUrl

Valor estático al que se debe enlazar la propiedad NavigateUrl de un objeto MenuItem.

Target

Valor estático al que se debe enlazar la propiedad Target de un objeto MenuItem.

Text

Valor estático al que se debe enlazar la propiedad Text de un objeto MenuItem.

ToolTip

Valor estático al que se debe enlazar la propiedad ToolTip de un objeto MenuItem.

Value

Valor estático al que se debe enlazar la propiedad Value de un objeto MenuItem.

Si se definen objetos MenuItemBinding que entran en conflicto, el control Menu aplica los enlaces de elemento de menú con el siguiente orden de prioridad:

  1. Objeto MenuItemBinding que define una profundidad y un miembro de datos, y coincide con ellos.

  2. Objeto MenuItemBinding que sólo define el miembro de datos, y coincide con él.

  3. Objeto MenuItemBinding que sólo define la profundidad, y coincide con ella.

  4. Objeto MenuItemBinding que no define ni la profundidad ni el miembro de datos. (Este tipo de enlace de elemento de menú se aplica a todos los elementos del menú.)

  5. Objeto MenuItemBinding que no tiene coincidencia en el origen de datos. En este caso, el valor que devuelve el método ToString() del elemento de datos se enlaza a las propiedades Text y Value de los elementos de menú a los que se aplica el objeto MenuItemBinding.

La clase MenuItemBinding permite también dar formato al texto que se muestra en un elemento de menú, mediante el establecimiento de la propiedad FormatString.

TopicLocation
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
Tutorial: Mostrar un menú en páginas 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: Controlar los menús de ASP.NET mediante programaciónGenerar aplicaciones Web ASP .NET en Visual Studio

En el siguiente ejemplo de código se muestra cómo utilizar objetos MenuItemBinding para definir la relación entre los campos de un control XmlDataSource y los elementos de menú de un control Menu. Para que este ejemplo funcione correctamente, debe copiar los datos XML de ejemplo que se proporcionan más abajo en un archivo denominado Menu.xml.


<%@ 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>MenuItemBinding Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <h3>MenuItemBinding Example</h3>

      <asp:menu id="NavigationMenu"
        datasourceid="MenuSource"
        runat="server">

        <DataBindings>

          <asp:menuitembinding datamember="MapHomeNode"
            formatstring="({0})" 
            textfield="Title"
            valuefield="Description"
            imageurlfield="ImageUrl"
            tooltipfield="ToolTip"
            target="_self" />
          <asp:menuitembinding datamember="MapNode" 
            depth="1"
            formatstring="[{0}]" 
            textfield="Title"
            valuefield="Description"
            imageurlfield="ImageUrl"
            tooltipfield="ToolTip"
            target="_blank"/>
          <asp:menuitembinding datamember="MapNode" 
            depth="2"
            formatstring="<{0}>" 
            textfield="Title"
            valuefield="Description"
            imageurlfield="ImageUrl"
            tooltipfield="ToolTip"
            target="_blank"/>

        </DataBindings>

      </asp:menu>

      <asp:xmldatasource id="MenuSource"
        datafile="Menu.xml"
        runat="server"/> 

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



El siguiente código constituye los datos de un mapa del sitio de ejemplo para el ejemplo anterior.

<MapHomeNode ImageUrl="~\Images\Home.gif"

Title="Home"

Description="Root Page"

ToolTip="Home Page">

<MapNode ImageUrl="~\Images\Music.gif"

Title="Music"

Description="Music Category"

ToolTip="Music Page">

<MapNode ImageUrl="~\Images\Classical.gif"

Title="Classical"

Description="Classical Section"

ToolTip="Classical Page"/>

<MapNode ImageUrl="~\Images\Rock.gif"

Title="Rock"

Description="Rock Section"

ToolTip="Rock Page"/>

<MapNode ImageUrl="~\Images\Jazz.gif"

Title="Jazz"

Description="Jazz Section"

ToolTip="Jazz Page"/>

</MapNode>

<MapNode ImageUrl="~\Images\Movies.gif"

Title="Movies"

Description="Movies Category"

ToolTip="Movies Page">

<MapNode ImageUrl="~\Images\Action.gif"

Title="Action"

Description="Action Section"

ToolTip="Action Page"/>

<MapNode ImageUrl="~\Images\Drama.gif"

Title="Drama"

Description="Drama Section"

ToolTip="Drama Page"/>

<MapNode ImageUrl="~\Images\Musical.gif"

Title="Musical"

Description="Musical Section"

ToolTip="Musical Page"/>

</MapNode>

</MapHomeNode>

System.Object
  System.Web.UI.WebControls.MenuItemBinding

Todos los miembros static (Shared en Visual Basic) públicos 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 Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft