利用 ASP.NET Menu 控件,可以开发 ASP.NET 网页的静态和动态显示菜单。您可以在 Menu 控件中直接配置其内容,也可通过将该控件绑定到数据源的方式来指定其内容。

无需编写任何代码,便可控制 ASP.NET Menu 控件的外观、方向和内容。除该控件公开的可视属性外,该控件还支持 ASP.NET 控件外观和主题。有关外观和主题的更多信息,请参见 ASP.NET 主题和外观概述。

静态显示和动态显示

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

静态显示行为

使用 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 属性:

[Visual Basic]

Menu.Orientation = Orientation.Vertical

[C#]

Menu.Orientation = Orientation.Vertical;

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

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

样式

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

  1. 控件

  2. SubMenuStyles

  3. MenuItemStyles

  4. SelectedItemStyles

  5. HoverMenuItemStyles

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

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

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

    注意

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

动态外观计时

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

[Visual Basic]

Menu.DisappearAfter = 1000

[C#]

Menu.DisappearAfter = 1000;

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

ASP.NET2.0 菜单控件menu的动态静态用法相关推荐

  1. 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.3 【增加了使用说明】

    ================================ 欢迎转载,但是请注明出处.本文出自博客园 .谢谢合作! ================================ 最新版本:V ...

  2. 利用ASP.NET2.0向导控件一步步建立与用户的交互--------提高和自定义用户体验

    本文是利用ASP.NET2.0向导控件一步步建立与用户的交互--------基本概念的后续文章,介绍了Wizard控件的高级使用以提高用户使用体验. 单击下面链接进行查看 http://www.cnm ...

  3. 【开源】我的分页控件正式命名为QuickPager ASP.NET2.0分页控件

    分页控件正式命名为 QuickPager ASP.NET2.0分页控件 . 版本号:2.0.0.1 Framework:.net2.0 分页方式:PostBack .URL (暂时没有实现URL的分页 ...

  4. ASP.NET2.0 分页控件 PagerPro.dll (1.1.0 最新)

    快来瞧,快来看了啊,新出炉的ASP.NET分页控件,热乎啦! 最新的ASP.NET2.0分页控件,经过对样式的处理,现有None和Standard两种样式,可以自定义是否显示Page Count 和 ...

  5. ASP.Net2.0 数据绑定控件的优越性在哪里?

    尽管有丰富.功能强大的编程接口,ASP.NET 1.x DataGrid 控件仍需要编写大量自定义代码来处理普通操作,如分页.排序.编辑和删除数据.例如,当用户单击以保存或取消更改时,DataGrid ...

  6. ASP.NET2.0 HiddenField控件

    HiddenField控件顾名思义就是隐藏输入框的服务器控件,它能让你保存那些不需要显示在页面上的且对安全性要求不高的数据.也许这个时候应该有这么一个疑问,为什么有了ViewState.Session ...

  7. 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.1——支持多种数据库。让分页更加简单。...

    分页控件的源代码下载网址:http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html (在网页的下面) 下载文件里面由一个测试网页:http: ...

  8. ASP.NET2.0登陆控件的使用(常见的三种方法)

    这里以CreateUserWizard 为例说明注册用户向导的常规使用 1)使用默认的向导控件功能   默认的注册向导的使用向导的简单,简单到如下只要一句话代码的地步:   <asp:Creat ...

  9. asp.net2.0中通过CS代码来动态的指定aspx页面中head中的信息

    在使用asp.net进行web开发的时候页面中的<head></head>中的信息可以通过,asp.net的cs文件动态指定,但是如果很多页面都这样处理的话,就和在aspx代码 ...

最新文章

  1. html中单双引号嵌套,[转]详细讲述asp中单引号与双引号(即引号多重嵌套)的用法...
  2. Citrx XenDesktop 7 实施三 配置XenServer
  3. java 流 下载文件_java 流实现文件下载问题
  4. java seam 框架简介
  5. react 不能往组件中传入属性的值为 undefined
  6. php调用应用程序api,使用PHP调用openAPI
  7. 如何将读书与自己的生活工作结合起来?
  8. lamda list 分组_java8lambda表达式对集合分组并且排序(记一次性能优化案例)
  9. [Java工具] 邮件发送工具
  10. Program Size: data=9.0 xdata=0 code=47
  11. VMware 11安装Mac OS X 10.10
  12. WordPress搬家教程:换空间与换域名
  13. uni的numberbox怎么用_jQuery EasyUI表单插件Numberbox数字框
  14. 中级软件测试工程师是什么水平,中级软件测试工程师需要满足的基本评定条件...
  15. 热烈祝贺方正璞华两款产品入选2021年度江苏省工业软件优秀产品和应用解决方案拟推广名单
  16. 骑行318、 2016.7.13
  17. kodi linux版本,Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面
  18. 计算机科学四个名校,计算机科学CS四大名校来啦
  19. 测绘——通过手机和smart3D创建三维模型
  20. python datetime 格式化_[已解决]Python中用strftime格式化datetime出错

热门文章

  1. Ajax表格控件实现
  2. SQL注入攻击及防范
  3. Nginx开启Gzip压缩配置详解
  4. springmvc5.3 之后版本 舍弃AntPath地址匹配模式通配符 “**”用法改变。
  5. 02331数据结构 散列表
  6. 【C语言】数据结构C语言版 实验3 带头结点的单链表
  7. 【Java】计算当n=9时n!的值,并分别输出1!到9!各阶乘的值
  8. 通过接口字段名称反向猜测数据库列名
  9. javascript入门_JavaScript入门手册(2020版)
  10. react hooks_如何破坏React Hooks的基础