MenuItemBinding 类

定义

定义数据项和 Menu 控件中它所绑定到的菜单项之间的关系。 此类不能被继承。

public ref class MenuItemBinding sealed : ICloneable, System::Web::UI::IDataSourceViewSchemaAccessor, System::Web::UI::IStateManager
public sealed class MenuItemBinding : ICloneable, System.Web.UI.IDataSourceViewSchemaAccessor, System.Web.UI.IStateManager
type MenuItemBinding = class
    interface IStateManager
    interface ICloneable
    interface IDataSourceViewSchemaAccessor
Public NotInheritable Class MenuItemBinding
Implements ICloneable, IDataSourceViewSchemaAccessor, IStateManager
继承
MenuItemBinding
实现

示例

下面的代码示例演示如何使用 MenuItemBinding 对象定义控件字段 XmlDataSource 与控件中的 Menu 菜单项之间的关系。 若要使此示例正常工作,必须将下面的示例 XML 数据复制到名为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>

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

以下代码是上一示例的示例站点地图数据。

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

注解

Menu当控件绑定到数据源时,其中每个数据项包含多个字段 ((例如具有多个属性的 XML 元素)) (如果未定义菜单项绑定),则菜单项将默认显示数据项方法返回ToString()的值。 在 XML 元素的情况下,菜单项显示元素名称,该名称显示菜单的基础结构,但不十分有用。 可以通过指定菜单项绑定将菜单项的属性绑定到特定字段。 对象 MenuItemBinding 定义每个数据项及其绑定到的菜单项之间的关系。

备注

Menu 控件绑定到 SiteMapDataSource 控件时,菜单项绑定不起作用。 使用站点地图提供程序自动执行绑定。

控件 Menu 将对象 MenuItemBinding 存储在属性中 DataBindings ,并将绑定应用于数据源,以在菜单层次结构和数据源层次结构之间创建一对一关系。 对于数据源中的每个数据项,控件 Menu 会尝试将该数据项与对象 MenuItemBinding 匹配以创建相应的 MenuItem 对象。

创建 MenuItemBinding 对象时,必须指定绑定的条件。 条件指示数据项何时应绑定到菜单项。 可以指定、DepthDataMember或两者。

菜单项深度指定绑定的菜单级别。 例如,以下 MenuItemBinding 声明将数据源的名称和 ID 字段分别绑定到 Text 深度为 0 的所有节点的名称和 Value ID 字段:

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

数据成员指定基础数据源中的数据项的类型,但可以根据数据源表示不同的信息。 层次结构数据源中的每个数据项 (由 IHierarchyData 对象表示) 公开一个 Type 属性,该属性指定数据项的类型。 例如,XML 元素的数据成员指定元素的名称。 当数据源包含多个数据类型时,数据成员指定要使用的数据类型。 以下 MenuItemBinding 声明将 <Book> 控件的 XmlDataSource 元素绑定到菜单中的所有菜单项,而不考虑层次结构中的位置:

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

有时,可能需要创建一个菜单项绑定,该绑定同时指定深度和数据成员。 当数据源包含具有相同数据成员值的不同级别的项时,通常使用此值。 例如,可以在 <Item> XML 文件中的不同级别显示元素。 以下 MenuItemBinding 声明演示如何指定应用于不同菜单深度相同数据成员的菜单项绑定:

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

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

如果在没有深度和数据成员的情况下定义了菜单项绑定,则菜单项绑定将应用于菜单内的所有菜单项。 当所有数据项都具有相同的属性并且应以相同的方式显示(无论菜单深度如何)时,通常会使用此功能。

建立绑定条件后,可以绑定可绑定到值的对象的属性 MenuItem 。 可以绑定到数据项的字段或静态值。 绑定到静态值时,应用对象的所有 MenuItem 对象 MenuItemBinding 共享相同的值。 绑定到字段的属性包含数据源中相应字段的值。

备注

可以通过直接设置相应的属性来选择性地替代对象中的 MenuItem 绑定属性。

下表列出了类的属性,该属性允许将对象的属性MenuItemBindingMenuItem绑定到数据项的字段。

属性 说明
ImageUrlField 要绑定到 ImageUrl 对象的属性的 MenuItem 字段。
NavigateUrlField 要绑定到 NavigateUrl 对象的属性的 MenuItem 字段。
TextField 要绑定到 Text 对象的属性的 MenuItem 字段。
ToolTipField 要绑定到 ToolTip 对象的属性的 MenuItem 字段。
ValueField 要绑定到 Value 对象的属性的 MenuItem 字段。

下表列出了允许将对象的属性绑定到静态值的类的属性MenuItemBindingMenuItem

属性 说明
ImageUrl 要绑定到 ImageUrl 对象的属性的 MenuItem 静态值。
NavigateUrl 要绑定到 NavigateUrl 对象的属性的 MenuItem 静态值。
Target 要绑定到 Target 对象的属性的 MenuItem 静态值。
Text 要绑定到 Text 对象的属性的 MenuItem 静态值。
ToolTip 要绑定到 ToolTip 对象的属性的 MenuItem 静态值。
Value 要绑定到 Value 对象的属性的 MenuItem 静态值。

如果定义了冲突 MenuItemBinding 对象,控件 Menu 将按以下优先级顺序应用菜单项绑定:

  1. 定义 MenuItemBinding 和匹配深度和数据成员的对象。

  2. MenuItemBinding仅定义和匹配数据成员的对象。

  3. MenuItemBinding定义和匹配深度的对象。

  4. MenuItemBinding定义深度和数据成员的对象。 (此类型的菜单项绑定应用于 menu.)

  5. MenuItemBinding数据源中没有匹配的对象。 在这种情况下,数据项方法返回ToString()的值随后将绑定到Text应用对象的菜单项MenuItemBinding的属性Value

MenuItemBinding 类还允许通过设置 FormatString 属性来设置菜单项中显示的文本的格式。

构造函数

MenuItemBinding()

初始化 MenuItemBinding 类的新实例。

属性

DataMember

获取或设置要绑定到菜单项的数据成员。

Depth

获取或设置应用 MenuItemBinding 对象的菜单深度。

Enabled

获取或设置一个值,该值指示是否启用应用 MenuItemBinding 对象的菜单项,以允许此菜单项显示一个弹出图像和任何子菜单项。

EnabledField

获取或设置数据源中字段的名称,该字段将绑定到 Enabled 对象将应用到的 MenuItem 对象的 MenuItemBinding 属性。

FormatString

获取或设置字符串,用于指定应用 MenuItemBinding 对象的菜单项的文本显示格式。

ImageUrl

获取或设置显示在应用 MenuItemBinding 对象的菜单项文本旁边的图像的 URL。

ImageUrlField

获取或设置数据源中字段的名称,该字段将绑定到 ImageUrl 对象将应用到的 MenuItem 对象的 MenuItemBinding 属性。

NavigateUrl

获取或设置在单击应用 MenuItemBinding 对象的菜单项时链接到的 URL。

NavigateUrlField

获取或设置数据源中字段的名称,该字段将绑定到 NavigateUrl 对象将应用到的 MenuItem 对象的 MenuItemBinding 属性。

PopOutImageUrl

获取或设置某个图像的 URL,此图像指示应用 MenuItemBinding 对象的菜单项存在动态子菜单。

PopOutImageUrlField

获取或设置数据源中字段的名称,该字段将绑定到 PopOutImageUrl 对象将应用到的 MenuItem 对象的 MenuItemBinding 属性。

Selectable

获取或设置一个值,该值指示应用 MenuItemBinding 对象的菜单项是否可被选中,或是否为“可单击的”。

SelectableField

获取或设置数据源中字段的名称,该字段将绑定到 Selectable 对象将应用到的 MenuItem 对象的 MenuItemBinding 属性。

SeparatorImageUrl

获取或设置图像的 URL,该图像显示在应用 MenuItemBinding 对象的菜单项的菜单项文本下面(用于将此菜单项与其他菜单项分开)。

SeparatorImageUrlField

获取或设置数据源中字段的名称,该字段将绑定到 SeparatorImageUrl 对象将应用到的 MenuItem 对象的 MenuItemBinding 属性。

Target

获取或设置目标窗口或框架,在此目标窗口或框架中显示与应用 MenuItemBinding 对象的菜单项关联的网页内容。

TargetField

获取或设置数据源中字段的名称,该字段将绑定到 Target 对象将应用到的 MenuItem 对象的 MenuItemBinding 属性。

Text

获取或设置为应用 MenuItemBinding 对象的菜单项显示的文本。

TextField

获取或设置数据源中字段的名称,该字段将绑定到 Text 对象将应用到的 MenuItem 对象的 MenuItemBinding 属性。

ToolTip

获取或设置应用 MenuItemBinding 对象的菜单项的 ToolTip 文本。

ToolTipField

获取或设置数据源中字段的名称,该字段将绑定到 ToolTip 对象将应用到的 MenuItem 对象的 MenuItemBinding 属性。

Value

获取或设置不可显示的值,该值用于存储有关应用 MenuItemBinding 对象的菜单项的任何附加数据,例如用于处理回发事件的数据。

ValueField

获取或设置数据源中字段的名称,该字段将绑定到 Value 对象将应用到的 MenuItem 对象的 MenuItemBinding 属性。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

显式接口实现

ICloneable.Clone()

创建 MenuItemBinding 对象的副本。

IDataSourceViewSchemaAccessor.DataSourceViewSchema

有关此成员的说明,请参见 DataSourceViewSchema

IStateManager.IsTrackingViewState

获取一个值,该值指示 MenuItemBinding 对象是否正将更改保存到其视图状态。

IStateManager.LoadViewState(Object)

加载节点的以前保存的视图状态。

IStateManager.SaveViewState()

保存 Object 的视图状态更改。

IStateManager.TrackViewState()

指示 MenuItemBinding 对象跟踪对其视图状态的更改。

适用于

另请参阅