平台:
使用C#在ASP.NET 4.0(Webforms)上进行网站开发。
情况:
我呈现的ASP.NET Menu控件是水平的,有三个级别的数据。
我设置了StaticDisplayLevels =“1”,以便菜单水平显示Level1数据,在level1上显示onmouseover,菜单显示level2数据和level2的onmouseover,菜单显示level3数据。
要求:
要在单个列表中显示level2和level3数据,第一级别2(如果有)的子级将显示在第一级别2数据下方。然后是第二级2及其子级(如果有的话),依此类推。
考虑上面的图片。我想拥有的是一个像左边那样的显示器。但是ASP.NET菜单控件将其呈现为右侧的图像。
我在网上寻找解决方案的高低。我甚至试过replacing the markup of the generated asp.net control using Menu's DataBound event and then injecting javascript hack to it。我成功了,但缺乏可重用性。
我想要的是一种实现可重用的ASP.NET菜单控件的方法,其中静态level2(和level3)在动态level1之后,就像一个megadropdown。我确信应该有办法让我走错路。有什么想法吗?
答案 0 :(得分:0)
您必须将菜单控件中的menudisplaylevel设置为3.请检查此
MaximumDynamicDisplayLevels="3"
<asp:Menu ID="Menu1" runat="server" StaticDisplayLevels="1"
MaximumDynamicDisplayLevels="3" DataSourceID="SiteMapDataSource1"
Orientation="Horizontal" OnDataBound="Menu1_DataBound">
</asp:Menu>
答案 1 :(得分:0)
无法获得任何简单的解决方案。
解决方法是将分层站点地图放入一个父ID为父xml的表中,如果没有父,则为0。然后我以编程方式在该数据的代码后面创建了一个asp:Menu