MenuItem 类

定义

表示 Menu 控件中显示的菜单项。 此类不能被继承。

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
继承
MenuItem
实现

示例

以下示例演示如何使用声明性语法使用静态MenuItem对象填充Menu控件。


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

以下示例演示如何将控件绑定到MenuSiteMapDataSource控件。 绑定到数据源时,控件 Menu 会自动创建 MenuItem 对象。 若要使此示例正常工作,必须将下面的示例网站地图数据复制到名为 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>

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

下面是上一示例的示例站点地图数据。

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

注解

控件 Menu 由由对象表示 MenuItem 的菜单项层次结构组成。 每个菜单项都有一个只读 Depth 属性,用于指定菜单项在控件中显示的 Menu 级别。 没有父菜单项的顶级 (级别 0) 的菜单项称为根菜单项。 具有父菜单项的菜单项称为子菜单项。 所有根菜单项都存储在集合中 Items 。 子菜单项存储在父菜单项的 ChildItems 集合中。 可以使用属性 Parent 访问菜单项的父菜单项。

备注

集合ItemsChildItems仅包含下一级别的菜单项。 若要进一步访问菜单树下的菜单项,请使用 ChildItems 后续菜单项的属性。

若要为 Menu 控件创建菜单项,请使用以下方法之一:

使用声明性语法创建静态菜单项。

使用构造函数动态创建类的新实例 MenuItem 。 然后,可以将这些 MenuItem 对象添加到 ItemsChildItems 集合。

Menu 控件绑定到数据源。 当 Menu 控件绑定到 SiteMapDataSource 控件时, MenuItem 会自动创建与数据源中的项对应的对象。 对于其他数据源, MenuItem 也会自动创建与数据源层次结构匹配的对象;但是,还必须使用 DataBindings 集合来定义菜单项绑定,这些绑定指定菜单项与其相应数据项之间的绑定关系。

菜单项显示在静态菜单或动态菜单中,具体取决于其级别。 静态菜单始终显示在控件中 Menu 。 默认情况下,顶级 (级别 0) 的菜单项显示在静态菜单中。 可以通过设置 StaticDisplayLevels 属性来显示静态菜单 (静态子菜单) 的其他菜单级别。 如果具有高于属性指定的 StaticDisplayLevels 值的任何) 显示在动态子菜单中,则菜单项 (。 仅当用户将鼠标指针放置在包含动态子菜单的父菜单项上时,才会显示动态子菜单。

当用户单击菜单项时,控件 Menu 可以导航到链接的网页,或者只需发回服务器即可。 NavigateUrl如果设置了菜单项的属性,控件Menu将导航到链接页;否则,它会将页面发回服务器进行处理。 默认情况下,链接页显示在控件所在的窗口或框架 Menu 中。 若要在不同的窗口或框架中显示链接的内容,请使用 Target 控件的属性 Menu

备注

Menu.Target 属性会影响控件中的每个菜单项。 若要为单个菜单项指定窗口或框架,请直接设置 Target 对象的属性 MenuItem

每个菜单项都有一 Text 个和一个 Value 属性。 属性的值 Text 显示在控件中 Menu ,而 Value 该属性用于存储有关菜单项的任何其他数据,例如传递给与菜单项关联的回发事件的数据。 如果设置属性 Text ,但将属性保留 Value 为未设置,则 Value 属性会自动设置与属性相同的值 Text 。 反之亦然。 如果设置属性,但未设置Value该属性,则Text属性会自动设置与属性相同的值ValueText

备注

同一菜单级别的菜单项必须具有属性的唯一值 Value ;控件 Menu 无法区分具有相同值的同一级别的不同菜单项。 在此方案中,如果用户单击具有重复值的菜单项,则选择菜单中第一个显示的菜单项。

若要在用户将鼠标指针放在菜单项上时显示工具提示,请设置项 ToolTip 的属性。

控件 Menu 具有多种不同类型的菜单项。 可以使用下表中的属性控制样式 (,例如字体大小和颜色) 。

菜单项样式属性 说明
DynamicHoverStyle 当鼠标指针放置在动态菜单项上时,动态菜单项的样式设置。
DynamicMenuItemStyle 单个动态菜单项的样式设置。
DynamicMenuStyle 动态菜单的样式设置。
DynamicSelectedStyle 当前所选动态菜单项的样式设置。
StaticHoverStyle 当鼠标指针放置在静态菜单项上时,静态菜单项的样式设置。
StaticMenuItemStyle 单个静态菜单项的样式设置。
StaticMenuStyle 静态菜单的样式设置。
StaticSelectedStyle 当前所选静态菜单项的样式设置。

可以使用下表中显示的样式集合来指定应用于菜单项的样式,而不是设置单个样式属性。

级别样式集合 说明
LevelMenuItemStyles 一个 MenuItemStyle 对象集合,这些对象基于其级别控制菜单项的样式。
LevelSelectedStyles 一组 MenuItemStyle 对象,这些对象基于其级别控制所选菜单项的样式。
LevelSubMenuStyles 一个 MenuItemStyle 对象集合,这些对象基于其级别控制子菜单项的样式。

集合中的第一个样式对应于菜单树中第一个深度级别的菜单项的样式。 集合中的第二个样式对应于菜单树中第二个深度级别的菜单项的样式,依此等。 这通常用于生成目录样式的导航菜单,其中特定深度的菜单项应具有相同的外观,无论它们是否具有子菜单。

备注

如果使用上表中列出的任何级别样式集合来定义控件的 Menu 样式,这些样式设置将替代单个菜单项样式属性。

除了自定义菜单项的样式外,还可以自定义其外观。 可以通过设置下表中的属性,为菜单项的不同部分指定自定义图像。

Image 属性 说明
ImageUrl 菜单项文本旁边显示的可选图像。
PopOutImageUrl 菜单项中显示的可选图像,指示菜单项具有动态子菜单。
SeparatorImageUrl 菜单项底部显示的可选图像,用于将其与其他菜单项分开。

若要确定控件中 Menu 当前是否选择了菜单项,请使用该 Selected 属性。 还可以使用 DataBound 属性确定菜单项是否绑定到数据。 如果菜单项绑定到数据,可以使用 DataItem 该属性访问绑定到菜单项的数据项的值。

有关 MenuItem 类的实例的初始属性值列表,请参见 MenuItem 构造函数。

构造函数

MenuItem()

初始化没有菜单文本和值的 MenuItem 类的新实例。

MenuItem(String)

使用指定的菜单文本初始化 MenuItem 类的新实例。

MenuItem(String, String)

使用指定的菜单文本和值初始化 MenuItem 类的新实例。

MenuItem(String, String, String)

使用指定的菜单文本、值和图像的 URL 初始化 MenuItem 类的新实例。

MenuItem(String, String, String, String)

使用指定的菜单文本、值、图像 URL 和导航 URL 初始化 MenuItem 类的新实例。

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

使用指定的菜单文本、值、图像 URL、导航 URL 和目标初始化 MenuItem 类的新实例。

属性

ChildItems

获取一个 MenuItemCollection 对象,该对象包含当前菜单项的子菜单项。

DataBound

获取一个值,该值指示菜单项是否是通过数据绑定创建的。

DataItem

获取绑定到菜单项的数据项。

DataPath

获取绑定到菜单项的数据的路径。

Depth

获取菜单项的显示级别。

Enabled

获取或设置一个值,该值指示 MenuItem 对象是否已启用,如果启用,则该项可以显示弹出图像和所有子菜单项。

ImageUrl

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

NavigateUrl

获取或设置单击菜单项时要导航到的 URL。

Parent

获取当前菜单项的父菜单项。

PopOutImageUrl

获取或设置显示在菜单项中的图像的 URL,用于指示菜单项具有动态子菜单。

Selectable

获取或设置一个值,该值指示 MenuItem 对象是否可选或“可单击”。

Selected

获取或设置一个值,该值指示 Menu 控件的当前菜单项是否已被选中。

SeparatorImageUrl

获取或设置图像的 URL,该图像显示在菜单项底部,将菜单项与其他菜单项隔开。

Target

获取或设置用来显示菜单项的关联网页内容的目标窗口或框架。

Text

获取或设置 Menu 控件中显示的菜单项文本。

ToolTip

获取或设置菜单项的工具提示文本。

Value

获取或设置一个非显示值,该值用于存储菜单项的任何其他数据,如用于处理回发事件的数据。

ValuePath

获取从根菜单项到当前菜单项的路径。

方法

Equals(Object)

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

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

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

(继承自 Object)

显式接口实现

ICloneable.Clone()

创建当前 MenuItem 对象的副本。

IStateManager.IsTrackingViewState

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

IStateManager.LoadViewState(Object)

加载菜单项先前保存的视图状态。

IStateManager.SaveViewState()

将视图状态更改保存到 Object

IStateManager.TrackViewState()

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

适用于

另请参阅