ASP.NET中的Menu控件的应用及XmlDataSource的了解

前端技术 2023/09/05 .NET
以前一直以为菜单都是通过sitemap制作的,最近看到项目中的方法是使用XmlDataSource榜定的。
Menusite.xlm文件:
复制代码 代码如下:

<?xmlversion=\"1.0\"encoding=\"utf-8\"?>
<Menusvalue=\"\">
<TopMenuid=\"100\"value=\"\"ImageUrl=\"~/App_Themes/Public/images/PublicImages/topMenu_stl.jpg\"NavigateUrl=\"\">
<TopMenuItemid=\"101\"value=\"ApplyforShortTermLeaseofStateLand\"NavigateUrl=\"~/TOL/Issuance/AppTOLApplication.aspx\"></TopMenuItem>
<TopMenuItemid=\"102\"value=\"ManageMyExistingAccount\"NavigateUrl=\"~/CaseEnquiry/HomeAuthenticate.aspx?ShowPanel=true\"></TopMenuItem>
<TopMenuItemid=\"103\"value=\"ViewMessagesforMyApplications\"NavigateUrl=\"~/CommonUtility/Email/ListAppCorrespondence.aspx\"></TopMenuItem>
</TopMenu>
<TopMenuid=\"200\"value=\"\"ImageUrl=\"~/App_Themes/Public/images/PublicImages/topMenu_aosl.jpg\"NavigateUrl=\"\">
<TopMenuItemid=\"202\"value=\"ManageMyExistingStateTitle\"NavigateUrl=\"\"></TopMenuItem>
<TopMenuItemid=\"203\"value=\"ViewMessagesforMyApplications\"NavigateUrl=\"\"></TopMenuItem>
</TopMenu>
<TopMenuid=\"300\"value=\"\"ImageUrl=\"~/App_Themes/Public/images/PublicImages/topMenu_lup.jpg\"NavigateUrl=\"\">
<TopMenuItemid=\"301\"value=\"SubmitProposalforLandUse\"NavigateUrl=\"\"></TopMenuItem>
</TopMenu>
<TopMenuid=\"500\"value=\"\"ImageUrl=\"~/App_Themes/Public/images/PublicImages/topMenu_logout.jpg\"NavigateUrl=\"~\"Logout.aspx\">
</TopMenu>
</Menus>

html中创建xmldatasource和asp:menu控件:
复制代码 代码如下:

<asp:XmlDataSourceID=\"XmlDataSource1\"runat=\"server\"DataFile=\"Menusite.xml\"></asp:XmlDataSource>
<asp:MenuDataSourceID=\"XmlDataSource1\"runat=\"server\"ID=\"Menu1\"MaximumDynamicDisplayLevels=\"4\"
Orientation=\"Horizontal\"StaticDisplayLevels=\"2\"StaticEnableDefaultPopOutImage=\"False\"
DynamicEnableDefaultPopOutImage=\"false\"StaticSubMenuIndent=\"\"ItemWrap=\"True\">
<DataBindings>
<asp:MenuItemBindingDataMember=\"TopMenu\"ImageUrlField=\"ImageUrl\"TextField=\"value\"
NavigateUrlField=\"NavigateUrl\"ValueField=\"value\"/>
<asp:MenuItemBindingDataMember=\"TopMenuItem\"NavigateUrlField=\"NavigateUrl\"TextField=\"value\"
ValueField=\"value\"/>
<asp:MenuItemBindingDataMember=\"Menus\"TextField=\"value\"ValueField=\"value\"/>
</DataBindings>
</asp:Menu>

menu的确够全面,只需要设置属性就可以满足你的要求,无需任何代码:
MaximumDynamicDisplayLevels:指定在静态显示层后应显示的动态显示菜单节点层数。如果设置为0,子节点将不显示动态。
Orientation:用于在页面上设置一个水平菜单条。
StaticDisplayLevels:从根菜单算起,静态显示的菜单的层数。上面的小技巧为:xml必须有根节点,但是在菜单显示的时候要显示第二层的菜单项,所以将此
xml的根节点value设为空,然后设置saticDisplayLeves为2,这样用户看到的就是静态显示的第二层。
StaticEnableDefaultPopOutImage:静态菜单项默认显示带有小箭头,设置为false,将修改这个状态。
DynamicEnableDefaultPopOutImage:设置动态显示是否带有小箭头。
StaticSubMenuIndent:控制显示了子菜单条目的缩进深度,如果这些菜单层级被设置为以静态模式显示。
ItemWrap:设置菜单项是否可以换行。
通过上面的设置可以轻松的制作出想要的menu的样式。

本文地址:https://www.stayed.cn/item/13008

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。