在asp.net中由datasource填充的bootstrap metismenu

时间:2014-09-02 17:04:21

标签: asp.net twitter-bootstrap webforms html-lists

我想创建一个由数据源生成的“Tree”结构化菜单。 我知道如何使用asp.net树视图或gridview。

然而,最近我已经爱上了自助运动,我只喜欢自助训练mantis menu。 然而,metismenu似乎只适用于列表'li'。然后这对我来说成了问题,因为我要生成的列表不是静态的,而是动态的。所以我无法一个接一个地绑定值,我需要有其他方法来做到这一点。

有谁能给我一些关于如何在asp.net webforms中实现这一点的想法?

PS:转发器会为这种情况工作吗?

1 个答案:

答案 0 :(得分:1)

您可以使用转发器或列表视图或几乎任何可以控制输出html的内容......

您尚未提供大量信息,但我怀疑您至少有一些包含文本值和网址的数据。

private void BindMenuData()
{
    var menuData = DataLayer.GetMenuStructure();

    rptMenu.DataSource = menuData;
    rptMenu.DataBind();
}

然后在您的HTML / ASPX中,您将拥有类似

的内容
<asp:Repeater id="rptMenu" runat="Server">
    <HeaderTemplate>
        <ul>
    </HeaderTemplate>

    <ItemTemplate>
        <li>
            <a href='<# Eval("URL")>'><# Eval("LinkText")></a>
        </li>

    </ItemTempate>

    <FooterTemplate>
        </ul>
    </FooterTemplate>

</asp:Repeater>

如果您需要子菜单,则需要在项目模板中嵌套另一个转发器,并在转发器itemDataBinding / Databound(无法记住哪个)事件中绑定它。

子菜单会带来额外的复杂性,很容易陷入一堆意大利面条代码,所以需要一些时间来思考它!

当然,回退可能总是一种方法,它使用字符串生成器为菜单生成HTML并将其吐出到文字中....虽然不是我认为的最佳选择!