【问题标题】:Tweaking ASP.NET Menu control like a mega dropdown像巨型下拉菜单一样调整 ASP.NET 菜单控件
【发布时间】:2011-07-05 12:09:09
【问题描述】:

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

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

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

考虑上图。我想要的是一个像左边那样的显示器。但是 ASP.NET Menu 控件将其呈现为右侧的图像。

我已经在网上到处寻找解决方案。我什至试过replacing the markup of the generated asp.net control using Menu's DataBound event and then injecting javascript hack to it。我成功了,但它缺乏可重用性。

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

【问题讨论】:

    标签: c# asp.net rendering aspmenu


    【解决方案1】:

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

    MaximumDynamicDisplayLevels="3"
    
    <asp:Menu ID="Menu1" runat="server" StaticDisplayLevels="1" 
    MaximumDynamicDisplayLevels="3" DataSourceID="SiteMapDataSource1" 
    Orientation="Horizontal" OnDataBound="Menu1_DataBound">
    </asp:Menu>
    

    【讨论】:

    • 我想要的是一个像level1动态,level2静态等等的菜单。似乎如果达到动态级别,它的子级别就不能是静态的。
    • ASP.NET 菜单控件不支持,因为您必须构建自己的自定义控件。然后根据需要应用不同的 CSS。
    • 我知道巴维克。这就是我来寻求帮助的原因。如果您检查了我帖子中的链接,您就会知道我对这个问题的研究有多深。我不会在没有研究的情况下在 SO 中发布问题。
    【解决方案2】:

    找不到任何简单的解决方案。

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

    【讨论】:

      猜你喜欢
      • 2014-09-18
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      • 2016-06-14
      • 2015-03-14
      • 2017-03-09
      相关资源
      最近更新 更多