`
isiqi
  • 浏览: 16005007 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ASP.NET - 菜单控件概述

阅读更多

利用 ASP.NET Menu 控件,可以开发 ASP.NET 网页的静态和动态显示菜单。

Menu 控件具有两种显示模式:静态模式和动态模式。静态显示意味着 Menu 控件始终是完全展开的。整个结构都是可视的,用户可以单击任何部位。在动态显示的菜单中,只有指定的部分是静态的,而只有用户将鼠标指针放置在父节点上时才会显示其子菜单项。

您可以在 Menu 控件中直接配置其内容,也可通过将该控件绑定到数据源的方式来指定其内容。无需编写任何代码,便可控制 ASP.NET Menu 控件的外观、方向和内容。除该控件公开的可视属性外,该控件还支持 ASP.NET 控件外观和主题。

一、静态显示行为

使用 Menu 控件的 StaticDisplayLevels 属性可控制静态显示行为。StaticDisplayLevels 属性指示从根菜单算起,静态显示的菜单的层数。例如,如果将 StaticDisplayLevels 设置为 3,菜单将以静态显示的方式展开其前三层。静态显示的最小层数为 1,如果将该值设置为 0 或负数,该控件将会引发异常。

二、动态显示行为

MaximumDynamicDisplayLevels 属性指定在静态显示层后应显示的动态显示菜单节点层数。例如,如果菜单有 3 个静态层和 2 个动态层,则菜单的前三层静态显示,后两层动态显示。

如果将 MaximumDynamicDisplayLevels 设置为 0,则不会动态显示任何菜单节点。如果将 MaximumDynamicDisplayLevels 设置为负数,则会引发异常。

三、定义菜单内容

可以通过两种方式来定义 Menu 控件的内容:添加单个 MenuItem 对象(以声明方式或编程方式);用数据绑定的方法将该控件绑定到 XML 数据源。

四、手动添加菜单项

可以通过在 Items 属性中指定菜单项的方式向控件添加单个菜单项。Items 属性是 MenuItem 对象的集合。下面的示例演示 Menu 控件的声明性标记,该控件有三个菜单项,每个菜单项有两个子项:

<asp:Menu ID="Menu1" runat="server" StaticDisplayLevels="3">

<Items>

<asp:MenuItem Text="File" Value="File">

<asp:MenuItem Text="New" Value="New"></asp:MenuItem>

<asp:MenuItem Text="Open" Value="Open"></asp:MenuItem>

</asp:MenuItem>

<asp:MenuItem Text="Edit" Value="Edit">

<asp:MenuItem Text="Copy" Value="Copy"></asp:MenuItem>

<asp:MenuItem Text="Paste" Value="Paste"></asp:MenuItem>

</asp:MenuItem>

<asp:MenuItem Text="View" Value="View">

<asp:MenuItem Text="Normal" Value="Normal"></asp:MenuItem>

<asp:MenuItem Text="Preview" Value="Preview"></asp:MenuItem>

</asp:MenuItem>

</Items>

</asp:Menu>

五、用数据绑定的方法将控件绑定到 XML 数据源

利用这种将控件绑定到 XML 文件的方法,可以通过编辑此文件来控制菜单的内容,而不需要使用设计器。这样就可以在不重新访问 Menu 控件或编辑任何代码的情况下,更新站点的导航内容。如果站点内容有变化,便可使用 XML 文件来组织内容,再提供给 Menu 控件,以确保网站用户可以访问这些内容。

六、外观和行为

可通过 Menu 控件的属性来调整该控件的行为。此外,您还可以控制动态显示行为,包括菜单节点持续显示的时间长度。例如,若要将 Menu 的方向从水平更改为垂直,则可按以下所述来设置 Orientation 属性:

Menu.Orientation = Orientation.Vertical;

将该属性设置为 Orientation.Horizontal,便可将菜单方向恢复为水平。

可以逐个设置 Menu 控件的属性来指定其外观的大小、颜色、字体和其他特性。此外,还可以对 Menu 控件应用外观和主题。

七、样式

每个菜单层都支持样式属性。如果没有设置动态样式属性,则使用静态样式属性。如果设置了动态样式属性,而没有设置静态样式属性,则使用默认的静态样式属性进行呈现。Menu 控件样式的层次结构如下所示:

1、控件

2SubMenuStyles

3MenuItemStyles

4SelectedItemStyles

5HoverMenuItemStyles

使用下面的逻辑可跨动态和静态菜单合并这些样式:

·各种样式分别被应用至适当的操作或项类型。

·所有样式都被合并到层次结构中优先于这些样式的样式中,并重写最后的样式。

说明: 永远不会合并静态菜单;如果没有定义静态样式,则应用动态样式。

八、动态外观计时

设计动态菜单时需要注意的一个方面便是菜单动态显示部分从显示到消失所需的时间长度。按以下方式调整 DisappearAfter 属性,可以按毫秒配置此值:

Menu.DisappearAfter = 1000;

默认值为 500 毫秒。如果将 DisappearAfter 的值设置为 0,在 Menu 控件之外暂停便会使其立即消失。将此值设置为 -1 指示暂停时间无限长,只有在 Menu 控件之外单击,才会使动态部分消失。

九、将 Menu 控件与 UpdatePanel 控件一起使用

UpdatePanel 控件用于通过回发更新页面的选定区域,而不是更新整个页面。Menu 控件可以在 UpdatePanel 控件内使用,限制条件是必须使用对级联样式表 (CSS) 类的引用来应用样式。例如,使用属性-CssClass(其中属性指 Property)属性 (Attribute) 来设置样式,而不是使用属性-子属性(其中属性指 Property)属性 (Attribute) 设置 DynamicHoverStyle 属性 (Property)。同样,在使用 DynamicHoverStyle 模板设置样式时,请使用该模板的 CssClass 属性 (Attribute)

十、Menu

Menu 控件用于显示 ASP.NET 网页中的菜单,并常与用于导航网站的 SiteMapDataSource 控件结合使用。Menu 控件支持下面的功能:

·数据绑定,将控件菜单项绑定到分层数据源。

·站点导航,通过与 SiteMapDataSource 控件集成实现。

·对 Menu 对象模型的编程访问,可动态创建菜单,填充菜单项,设置属性等。

·可自定义外观,通过主题、用户定义图像、样式和用户定义模板实现。

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

说明: Target 属性影响控件中的所有菜单项。若要为单个菜单项指定一个窗口或框架,请直接设置 MenuItem 对象的 Target 属性。

Menu 控件显示两种类型的菜单:静态菜单和动态菜单。静态菜单始终显示在 Menu 控件中。默认情况下,根级(级别 0)菜单项显示在静态菜单中。通过设置 StaticDisplayLevels 属性,可以在静态菜单中显示更多菜单级别(静态子菜单)。级别高于 StaticDisplayLevels 属性所指定的值的菜单项(如果有)显示在动态菜单中。仅当用户将鼠标指针置于包含动态子菜单的父菜单项上时,才会显示动态菜单。一定的持续时间之后,动态菜单自动消失。使用 DisappearAfter 属性指定持续时间。

说明: 如果用户在菜单外部单击,动态菜单也会消失。

还可以通过设置 MaximumDynamicDisplayLevels 属性,限制动态菜单的显示级别数。高于指定值的菜单级别则被丢弃。

说明: Menu 控件不应在 UpdatePanel 控件中使用。可仅将 Menu 控件添加到 UpdatePanel 控件以外的页面。UpdatePanel 控件用于更新页面的选定区域,而不会用回发更新整个页面。

10.1、菜单项

Menu 控件由菜单项(由 MenuItem 对象表示)树组成。顶级(级别 0)菜单项称为根菜单项。具有父菜单项的菜单项称为子菜单项。所有根菜单项都存储在 Items 集合中。子菜单项存储在父菜单项的 ChildItems 集合中。

每个菜单项都具有 Text 属性和 Value 属性。Text 属性的值显示在 Menu 控件中,而 Value 属性则用于存储菜单项的任何其他数据(如传递给与菜单项关联的回发事件的数据)。在单击时,菜单项可导航到 NavigateUrl 属性指示的另一个网页。

说明: 如果菜单项未设置 NavigateUrl 属性,则单击该菜单项时,Menu 控件只是将页提交给服务器进行处理。

通过设置 ImageUrl 属性,也可选择在菜单项中显示图像。

10.2、静态数据

最简单的 Menu 控件数据模型即是静态菜单项。若要使用声明性语法显示静态菜单项,请首先在 Menu 控件的开始和结束标记之间嵌套开始和结束标记 <Items>。然后,通过在开始和结束标记 <Items> 之间嵌套 <asp:MenuItem> 元素,创建菜单结构。每个 <asp:MenuItem> 元素都表示控件中的一个菜单项,并映射到一个 MenuItem 对象。通过设置菜单项的 <asp:MenuItem> 元素的属性 (Attribute),可以设置其属性 (Property)。若要创建子菜单项,请在父菜单项的开始和结束标记 <asp:MenuItem> 之间嵌套更多 <asp:MenuItem> 元素。

10.3、绑定到数据

Menu 控件也可以绑定到数据。可以使用下面两种方法中的一种将 Menu 控件绑定到适当的数据源类型:

·Menu 控件可以使用任意分层数据源控件,如 XmlDataSource 控件或 SiteMapDataSource 控件。若要绑定到分层数据源控件,请将 Menu 控件的 DataSourceID 属性设置为数据源控件的 ID 值。Menu 控件自动绑定到指定的数据源控件。这是绑定到数据的首选方法。

·Menu 控件还可以绑定到 XmlDocument 对象。若要绑定到此数据源,请将 Menu 控件的 DataSource 属性设置为该数据源,然后调用 DataBind 方法。

在绑定到数据源时,如果数据源的每个数据项都包含多个属性 (Property)(例如具有多个属性 (Attribute) XML 元素),则菜单项默认显示数据项的 ToString 方法返回的值。对于 XML 元素,菜单项显示其元素名称,这样可显示菜单树的基础结构,但除此之外并无用处。通过使用 DataBindings 集合指定菜单项绑定,可以将菜单项绑定到特定数据项属性。DataBindings 集合包含 MenuItemBinding 对象,这些对象定义数据项和它所绑定到的菜单项之间的关系。您可以指定要在节点中显示的绑定条件和数据项属性。

不能通过将 Text TextField 属性设置为空字符串 ("") Menu 控件中创建空节点。将这些属性设置为空字符串相当于未设置这些属性。在这种情况下,Menu 控件将使用 DataSource 属性创建默认绑定。

10.4、自定义用户界面

可以使用多种方法自定义 Menu 控件的外观。首先,可以通过设置 Orientation 属性,指定是水平还是垂直呈现 Menu 控件。还可以为每个菜单项类型指定不同的样式(如字体大小和颜色等)。

如果想使用级联样式表 (CSS) 自定义控件的外观,您既可以使用内联样式,也可以使用一个单独的 CSS 文件,但不能同时使用这两者。同时使用内联样式和一个单独的 CSS 文件,会导致意外的结果。有关将样式表与控件结合使用的更多信息,请参见 ASP.NET Web 服务器控件和 CSS 样式。

下表列出了可用的菜单项样式。

菜单项样式属性

说明

DynamicHoverStyle

动态菜单项在鼠标指针置于其上时的样式设置。

DynamicMenuItemStyle

单个动态菜单项的样式设置。

DynamicMenuStyle

动态菜单的样式设置。

DynamicSelectedStyle

当前选定的动态菜单项的样式设置。

StaticHoverStyle

静态菜单项在鼠标指针置于其上时的样式设置。

StaticMenuItemStyle

单个静态菜单项的样式设置。

StaticMenuStyle

静态菜单的样式设置。

StaticSelectedStyle

当前选定的静态菜单项的样式设置。

除了设置各样式属性之外,还可以根据菜单项的级别,使用下列样式集合指定应用于菜单项的样式。

级别样式集合

说明

LevelMenuItemStyles

MenuItemStyle 对象的集合,这些对象根据级别控制菜单项的样式。

LevelSelectedStyles

MenuItemStyle 对象的集合,这些对象根据级别控制所选菜单项的样式。

LevelSubMenuStyles

MenuItemStyle 对象的集合,这些对象根据级别控制子菜单项的样式。

集合的第一个样式对应于菜单树第一个深度级别的菜单项的样式。集合的第二个样式对应于菜单树第二个深度级别的菜单项的样式,依此类推。此集合最常用于生成目录风格的导航菜单;在这种导航菜单中,某个深度的菜单项不管是否具有子菜单,都有相同的外观。

说明: 如果使用上表列出的任何级别样式集合来定义 Menu 控件的样式,这些样式设置都会重写各菜单项的样式属性。

改变控件外观的另一种方法是自定义显示在 Menu 控件中的图像。通过设置下表所示的属性,可以为控件各部分指定自己的自定义图像。

图像属性

说明

DynamicBottomSeparatorImageUrl

显示在动态菜单项底部的可选图像,用于将菜单项与其他菜单项隔开。

DynamicPopOutImageUrl

显示在动态菜单项中的可选图像,用于指示菜单项具有子菜单。

margin: 0cm 0.75pt 0pt; text-align

分享到:
评论

相关推荐

    asp.net知识库

    为 asp.net 2.0 的菜单控件增加 target 属性 ASP.NET 2.0 的内部变化 常见的 ASP.NET 2.0 转换问题和解决方案 Asp.Net2.0无刷新客户端回调 体验.net 2.0 的优雅(1) -- 异步WebService调用 ASP.NET 2.0页面框架的几...

    ASP.NET 3.5 开发大全11-15

    1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual ...

    ASP.NET 3.5 开发大全1-5

    1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual ...

    ASP.NET 3.5 开发大全

    1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual ...

    ASP.NET3.5从入门到精通

    1.1.5 ASP.NET 3.5 新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET 应用程序需框架 1.2.1 什么是.NET 应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装...

    ASP.NET 3.5 开发大全word课件

    1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual ...

    ASP.NET Night Words

    9.3 asp.net验证控件概述 148 9.4 requiredfieldvalidator控件 149 9.5 comparevalidator控件 151 9.6 rangevalidator控件 155 9.7 正则表达式 157 9.8 regularexpressionvalidator控件 159 9.9 ...

    ASPNET35开发大全第一章

    1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual ...

    Visual C#.NET程序设计(含书籍和源码) 李兰友 杨晓光 清华出版社,北交出版社

    非常经典的高校C# .net开发教程...10.5 ASP.NET编程应用示例 本章小结 习题 第11章 应用程序设计实践 11.1 电子邮箱程序设计 11.2 Web浏览器程序设计 11.3 彩图处理 11.4 统计图表 11.5 五子棋 本章小结 习题 参考文献

    VB.net课件(ppt)

    基于VB.NET的Windows编程课件,ppt格式。 第0章 概述(补充) 第1章 绪论 第2章 创建第一个Windows应用程序 第3章 数据类型、变量和...×第13章 ASP.NET初步 ×第14章 Web控件 第15章 数据访问 第16章 ADO.NET初步

    Visual C# 2010程序设计教程PPT

    第12章 C#Web应用程序开发与ASP.NET Web Form ASP.NET的工作原理 使用ASP.NET 配置ASP.NET 第13章 文件与注册表编程 目录操作 文件管理 读写文件 第14章 语言集成查询-LINQ LINQ实现基础...

    一款非常好的WPF编程宝典2010 源代码

    第1章 WPF概述 1 1.1 理解Windows图形 1 1.1.1 DirectX:新的图形引擎 1 1.1.2 硬件加速与WPF 2 1.2 WPF:高级API 4 1.2.1 分辨率无关性 5 1.2.2 WPF的演化 9 1.2.3 Windows窗体将继续保留 11 1.2.4 DirectX...

    WPF编程宝典—C#2010版(源码)

    他是Inside Visual Basic、ASP Today、Hardcore Visual Studio.NET等著名软件开发杂志的特约作者,还写作了多部脍炙人口的编程畅销书,本书为其代表作。 内容截图 目录: 《wpf编程宝典—c#2010版》 第1章 wpf...

    Visual Basic 2010入门经典(第6版)完整版 之1/2

    *** 注:由于该文件大于60MB,所以得分两个文件上传,敬请谅解!*** 基本信息 作 者:(美)威利斯,(美...第18章 asp.net 第19章 visual basic 2010和xml 第20章 部署应用程序 附录a 练习题答案 附录b 如何深入学习

    Visual Basic 2010入门经典(第6版)完整版 之2/2

    *** 注:由于该文件大于60MB,所以得分两个文件上传,敬请谅解!*** ========要下载完两个文件后,同放在一...第18章 asp.net 第19章 visual basic 2010和xml 第20章 部署应用程序 附录a 练习题答案 附录b 如何深入学习

    [WPF编程宝典.C#2010版].(美)Matthew.MacDonald.王德才.扫描版.part3.rar

    他是Inside Visual Basic、ASP Today、Hardcore Visual Studio.NET等著名软件开发杂志的特约作者,还写作了多部脍炙人口的编程畅销书,本书为其代表作。 目录: 《wpf编程宝典—c#2010版》 第1章 wpf概述 第2章 ...

    [WPF编程宝典.C#2010版].(美)Matthew.MacDonald.王德才.扫描版.part4.rar

    他是Inside Visual Basic、ASP Today、Hardcore Visual Studio.NET等著名软件开发杂志的特约作者,还写作了多部脍炙人口的编程畅销书,本书为其代表作。 目录: 《wpf编程宝典—c#2010版》 第1章 wpf概述 第2章 ...

    C#微软培训资料

    第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 编程语言 程语言编程语言 程语言 C#.4 1.1 Microsoft.NET——一场新的革命.4 1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11...

    Visual C#2010 从入门到精通(Visual.C#.2010.Step.By.Step).完整去密码锁定版 I部分

    书中沿袭深受读者欢迎的step by step风格,通过丰富的练习引导读者逐步构建windows应用程序,访问sql server数据库,开发asp.net web应用程序,创建并使用web服务等。  全书共29章,结构清晰,叙述清楚。所有练习均...

Global site tag (gtag.js) - Google Analytics