还有一种比较简单的方法就是,将不同的用户的导航菜单做成不同的xml文件,用户登录时动态地加载xml文件
我们如何使用XmlDataSource动态地加载xml文件并形成不同的菜单
XmlDataSource设置
< asp:XmlDataSource ID ="XmlDataSource1" runat ="server" DataFile ="~/Test/XMLFile.xml" ></ asp:XmlDataSource >
导航文件
<? xml version="1.0" encoding="utf-8" ?>
< menu title ="导航" description ="" >
< menuItem url ="http://www.baidu.com" title ="网易" description ="" />
< menuItem url ="http://www.google.cn" title ="新浪" description ="" />
< menuItem url ="http://www.163.com" title ="126" description ="" />
< menuItem url ="http://www.126.com" title ="其它" description ="" />
</ menu >
asp:menu中的属性定义
< asp:Menu ID ="Menu1" runat ="server" Orientation ="Horizontal" DataSourceID ="XmlDataSource1"
StaticDisplayLevels ="2" >
< DataBindings >
< asp:MenuItemBinding DataMember ="menu" Depth ="0" TextField ="title" />
< asp:MenuItemBinding DataMember ="menuItem" Depth ="1" NavigateUrlField ="url" TextField ="title" />
</ DataBindings >
</ asp:Menu >
< asp:XmlDataSource ID ="XmlDataSource1" runat ="server" DataFile ="~/Test/XMLFile.xml" ></ asp:XmlDataSource >
导航文件
<? xml version="1.0" encoding="utf-8" ?>
< menu title ="导航" description ="" >
< menuItem url ="http://www.baidu.com" title ="网易" description ="" />
< menuItem url ="http://www.google.cn" title ="新浪" description ="" />
< menuItem url ="http://www.163.com" title ="126" description ="" />
< menuItem url ="http://www.126.com" title ="其它" description ="" />
</ menu >
asp:menu中的属性定义
< asp:Menu ID ="Menu1" runat ="server" Orientation ="Horizontal" DataSourceID ="XmlDataSource1"
StaticDisplayLevels ="2" >
< DataBindings >
< asp:MenuItemBinding DataMember ="menu" Depth ="0" TextField ="title" />
< asp:MenuItemBinding DataMember ="menuItem" Depth ="1" NavigateUrlField ="url" TextField ="title" />
</ DataBindings >
</ asp:Menu >
MenuItemBinding中定义出不同的层次来,并给datamemeber定义出数据来源来,比如说第一个级别datamember中的层次就是0层级,
第二个层级的数据源就是menuitem
由于第一个节点是根结点,一般不用设置NaviateUrlField这个属性
StaticDisplayLevels属性设置了一开始显示的时候最大显示的层级