4

平台:
使用 C# 在 ASP.NET 4.0(Webforms) 上进行网站开发。

情况:
我呈现的 ASP.NET 菜单控件是水平的,具有三个级别的数据。并且我设置了StaticDisplayLevels="1",使菜单水平显示Level1数据和level1的onmouseover,菜单显示level2数据和level2的onmouseover,菜单显示level3数据。

要求:
在一个列表中显示 level2 和 level3 数据,第一个 level2 的子项(如果有)显示在第一个 level2 数据的下方。然后是第二级 2 及其子级(如果有)等等。

想要一个像第一个一样的显示器。 ASP.NET 菜单控件显示类似于第二个的内容考虑上图。我想要的是一个像左边那样的显示器。但是 ASP.NET Menu 控件将其呈现为右侧的图像。

我在网上到处寻找解决方案。我什至尝试使用 Menu 的 DataBound 事件替换生成的 asp.net 控件的标记,然后向其注入 javascript hack。我成功了,但它缺乏可重用性。

我想要的是一种在动态 level1 之后使用静态 level2(和 level3)实现可重复使用的 ASP.NET 菜单控件的方法,它的作用就像一个巨型下拉菜单。我确信应该有一种方法,而且我走错了路。有任何想法吗?

4

2 回答 2

0

无法得到任何简单的解决方案。

解决方法是这使分层站点地图成为一个表,其中父 xml 的父 id 和 0 如果没有父。然后我以编程方式在该数据后面的代码中创建了一个 asp:Menu

于 2011-03-14T13:13:12.883 回答
0

您必须已将菜单控件中的 menudisplaylevel 设置为 3。请检查此

MaximumDynamicDisplayLevels="3"

<asp:Menu ID="Menu1" runat="server" StaticDisplayLevels="1" 
MaximumDynamicDisplayLevels="3" DataSourceID="SiteMapDataSource1" 
Orientation="Horizontal" OnDataBound="Menu1_DataBound">
</asp:Menu>
于 2011-02-28T03:31:50.007 回答