Visual Studio .NET 2002Windows Vista.NET 1.0Windows 2003Windows 2000Windows XPHTML中级开发Visual StudioJavascriptWindows.NETASP.NETC#
基于 JavaScript 的 ASP.NET 动态 XML Web 菜单控件





4.00/5 (26投票s)
2005年5月8日
2分钟阅读

453661

6996
基于 JavaScript 的 ASP.NET 动态 XML Web 菜单控件。
引言
这是一个免费的基于 Web 的菜单(启用 JavaScript)控件。支持动态菜单创建和绑定的 Web 菜单控件不多。这个 WebMenu
控件支持动态菜单创建、XML 菜单绑定和 DataSet
绑定。此控件在内部使用 triga (免费脚本) JavaScript 菜单。可以使用简单的 XML 架构来表示任何复杂的菜单结构。菜单位置和样式可以轻松应用和动态更改,而不会影响 Web 应用程序。
设置 WebMenu 的步骤
- 创建一个新的 ASP.NET Web 项目,右键单击工具箱;选择“添加/删除项”,然后添加 SuperControls.WebMenu.dll 引用(编译 SuperControls.WebMenu.cproj 以获取 DLL)。
- 将 JS 文件 menu_tpl.js 和 menu.js 复制到站点的根目录。
- 将菜单样式表 menu.css 文件复制到子目录 css。
- 将 menudata.xml 复制到根目录。
- 创建一个 ASPX 文件,并将
WebMenu
控件拖放到 WebForm,然后使用以下方法之一将 XML/动态数据绑定到菜单控件。
ASPX 代码
<cc1:WebMenu id="WebMenu1" MenuXMLPath="\\ServerName\rad\menudata.xml"
PadWidth="24" runat="server">
</cc1:WebMenu>
<!--
Other samples
//**********************************************************************
<cc1:WebMenu id="WebMenu2" MenuXMLPath="ServerName\rad\menudata.xml"
ImageArrow="<img src=images\\arrow.gif border=0"
PadWidth="22" runat="server">
</cc1:WebMenu>
<cc1:WebMenu id="WebMenu3" MenuXMLPath="\\ServerName\rad\menudata.xml"
ImageArrow="" PadWidth="26" runat="server">
</cc1:WebMenu>
-->
动态绑定菜单项的方法...
方法 1
使用服务器中 XML 菜单文件的路径设置 MenuXMLPath
属性。
方法 2
使用 XML 文件创建一个新的 DataSet
并绑定到 Web 菜单控件。
例如
DataSet dsMenu = new DataSet();
dsMenu.ReadXml(@"\\ServerName\rad\menudata.xml");
WebMenu1.DataSource = dsMenu;
方法 3
从数据库获取菜单数据,并使用以下结构填充 DataSet
- 第 1 列:
menuid
(菜单项的唯一 ID)。 - 第 2 列:
name
(菜单项的名称)。 - 第 3 列:
root
(菜单项的父项。如果它是起始/根项,则根值将为 "",否则将为父项menuid
的值)。 - 第 4 列:
url
(菜单项的 URL)。
例如
WebMenu1.DataSource = dsMenu;
// (Sample DataSet is given below.)
XML 菜单文件(示例)
<?xml version="1.0" encoding="utf-8" ?>
<menu>
'Level 0 nodes
<menuitem root="" name="Search Sites" menuid="1" />
<menuitem root="" name="Webmail Sites" menuid="2" />
<menuitem root="" name="DotNet Sites" menuid="3" />
'Level 1 Items
<menuitem root="1" name="Google" url="http://www.google.com"
menuid="11"/>
<menuitem root="1" name="Altavista" url="http://www.Altavista.com"
menuid="12"/>
'Level 1 Items
<menuitem root="2" name="Hot-mail" url="" menuid="21"/>
'Level 2 Items
<menuitem root="21" name="Hotmail" url="http://www.hotmail.com"
menuid="211"/>
<menuitem root="21" name="MSN" url="http://www.MSN.com"
menuid="212"/>
<menuitem root="2" name="Yahoo" url="http://www.yahoo.com"
menuid="22"/>
<menuitem root="2" name="Rediff" url="http://www.rediff.com"
menuid="23"/>
'Level 1 Items
<menuitem root="3" name="Microsoft" url="http://www.Microsoft.com"
menuid="31"/>
<menuitem root="3" name="GotDotNet" url="http://www.GotDotNet.com"
menuid="32"/>
<menuitem root="3" name="CodeProject" url="https://codeproject.org.cn"
menuid="33"/>
<menuitem root="3" name="ASpdotnet" url="http://www.ASpdotnet.com"
menuid="34"/>
</menu>
在上面的示例中,root
属性表示菜单项的父项。对于父/零级菜单项,root
属性将为空。
示例动态菜单 DataSet(带一个 DataTable)
根 |
名称 |
menuid |
url |
搜索站点 | 1 | ||
Webmail 站点 | 2 | ||
DotNet 站点 | 3 | ||
1 | 11 | http://www.google.com | |
1 | Altavista | 12 | http://www.Altavista.com |
2 | Hot-mail | 21 | |
21 | Hotmail | 211 | http://www.hotmail.com |
21 | MSN | 212 | http://www.MSN.com |
2 | Yahoo | 22 | http://www.yahoo.com |
2 | Rediff | 23 | http://www.rediff.com |
3 | Microsoft | 31 | http://www.Microsoft.com |
3 | GotDotNet | 32 | http://www.GotDotNet.com |
3 | CodeProject | 33 | https://codeproject.org.cn |
3 | ASpdotnet | 34 | http://www.ASpdotnet.com |