asp.net中menu控件的使用
以前一直以为菜单都是通过sitemap制作的,最近看到项目中的方法是使用XmlDataSource榜定的。
Menusite.xlm文件:
<?xml version="1.0" encoding="utf-8" ?>
<Menus value="">
<TopMenu id="100" value ="" ImageUrl="~/App_Themes/Public/images/PublicImages/topMenu_stl.jpg" NavigateUrl="" >
<TopMenuItem id="101" value="Apply for Short Term Lease of State Land" NavigateUrl="~/TOL/Issuance/AppTOLApplication.aspx"></TopMenuItem>
<TopMenuItem id="102" value="Manage My Existing Account" NavigateUrl="~/CaseEnquiry/HomeAuthenticate.aspx?ShowPanel=true"></TopMenuItem>
<TopMenuItem id="103" value="View Messages for My Applications" NavigateUrl="~/CommonUtility/Email/ListAppCorrespondence.aspx"></TopMenuItem>
</TopMenu>
<TopMenu id="200" value ="" ImageUrl="~/App_Themes/Public/images/PublicImages/topMenu_aosl.jpg" NavigateUrl="" >
<TopMenuItem id="202" value="Manage My Existing State Title" NavigateUrl=""></TopMenuItem>
<TopMenuItem id="203" value="View Messages for My Applications" NavigateUrl=""></TopMenuItem>
</TopMenu>
<TopMenu id="300" value ="" ImageUrl="~/App_Themes/Public/images/PublicImages/topMenu_lup.jpg" NavigateUrl="">
<TopMenuItem id="301" value="Submit Proposal for Land Use" NavigateUrl=""></TopMenuItem>
</TopMenu>
<TopMenu id="500" value ="" ImageUrl="~/App_Themes/Public/images/PublicImages/topMenu_logout.jpg" NavigateUrl="~"Logout.aspx" >
</TopMenu>
</Menus>
html中创建xmldatasource和asp:menu控件:
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="Menusite.xml"></asp:XmlDataSource>
<asp:Menu DataSourceID="XmlDataSource1" runat="server" ID="Menu1" MaximumDynamicDisplayLevels="4"
Orientation="Horizontal" StaticDisplayLevels="2" StaticEnableDefaultPopOutImage="False"
DynamicEnableDefaultPopOutImage="false" StaticSubMenuIndent="" ItemWrap="True">
<DataBindings>
<asp:MenuItemBinding DataMember="TopMenu" ImageUrlField="ImageUrl" TextField="value"
NavigateUrlField="NavigateUrl" ValueField="value" />
<asp:MenuItemBinding DataMember="TopMenuItem" NavigateUrlField="NavigateUrl" TextField="value"
ValueField="value" />
<asp:MenuItemBinding DataMember="Menus" TextField="value" ValueField="value" />
</DataBindings>
</asp:Menu>
menu的确够全面,只需要设置属性就可以满足你的要求,无需任何代码:
MaximumDynamicDisplayLevels:指定在静态显示层后应显示的动态显示菜单节点层数。如果设置为0,子节点将不显示动态。
Orientation:用于在页面上设置一个水平菜单条。
StaticDisplayLevels:从根菜单算起,静态显示的菜单的层数。上面的小技巧为:xml必须有根节点,但是在菜单显示的时候要显示第二层的菜单项,所以将此
xml的根节点value设为空,然后设置saticDisplayLeves为2,这样用户看到的就是静态显示的第二层。
StaticEnableDefaultPopOutImage:静态菜单项默认显示带有小箭头,设置为false,将修改这个状态。
DynamicEnableDefaultPopOutImage:设置动态显示是否带有小箭头。
StaticSubMenuIndent:控制显示了子菜单条目的缩进深度,如果这些菜单层级被设置为以静态模式显示。
ItemWrap:设置菜单项是否可以换行。
通过上面的设置可以轻松的制作出想要的menu的样式。