2014-09-02 78 views
0

我想創建一個由數據源生成的「Tree」結構化菜單。 我知道如何做到這一點與asp.net樹視圖或gridview。由asp.net中的datasource填充bootstrap metismenu

然而,最近我已經成長爲愛自舉,我只是喜歡引導mantis menu。 然而,metismenu似乎只能在列表'李'上工作。然後這成爲我的問題,因爲我想要生成的列表不是靜態的。所以我不能將價值逐一綁定,我需要採取其他方式來做到這一點。

任何人都可以給我一些關於如何在asp.net webforms中實現這一點的想法嗎?

PS:中繼器是否適合這種情況?

回答

1

你可以使用,讓你的HTML輸出的控制中繼器或列表視圖或幾乎任何東西......

您還沒有呈現的信息的巨量去,但我懷疑你有至少一些包含文本值和URL的數據。

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並將其吐出到字面上......在我看來,這不是最好的選擇!

+0

是的,你所描述的正是我想到的使用中繼器來顯示我所有的數據結構。我得到的唯一擔憂是,當使用中繼器時,會顯示爲1個菜單或多個菜單 – nanobots 2014-09-03 14:26:03

+0

不確定你的意思? 以上應該只能提供一個UL ..如果這就是你的意思? – D3vy 2014-09-09 08:45:21