我想创建一个由数据源生成的“Tree”结构化菜单。 我知道如何使用asp.net树视图或gridview。
然而,最近我已经爱上了自助运动,我只喜欢自助训练mantis menu。 然而,metismenu似乎只适用于列表'li'。然后这对我来说成了问题,因为我要生成的列表不是静态的,而是动态的。所以我无法一个接一个地绑定值,我需要有其他方法来做到这一点。
有谁能给我一些关于如何在asp.net webforms中实现这一点的想法?
PS:转发器会为这种情况工作吗?答案 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并将其吐出到文字中....虽然不是我认为的最佳选择!