gpt4 book ai didi

c# - 使用下拉菜单制作动态菜单

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:01 25 4
gpt4 key购买 nike

我目前有这样的动态菜单:

<asp:Repeater runat="server" id="MenuRepeater">
<headertemplate>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="#">KezBlu</a>
<div class="nav-collapse collapse">
<ul class="nav">
</headertemplate>
<itemtemplate>
<li><a href='<%# Eval("PageFile") %>'><%# Eval("DisplayName") %></a></li>
</itemtemplate>
<footertemplate>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
</footertemplate>
</asp:Repeater>

数据源是:

 public partial class KezberProjectManager : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
MenuRepeater.DataSource = GetMenu();
MenuRepeater.DataBind();
}

protected DataTable GetMenu()
{
// you would normally pull this from a database, this is here
// only to show the idea.
DataTable menu = new DataTable();
menu.Columns.Add("PageFile", typeof(String));
menu.Columns.Add("DisplayName", typeof(String));

DataRow row = menu.NewRow();
row["PageFile"] = "home.aspx";
row["DisplayName"] = "Home";
menu.Rows.Add(row);

row = menu.NewRow();
row["PageFile"] = "Accounts.aspx";
row["DisplayName"] = "Accounts";
menu.Rows.Add(row);

row = menu.NewRow();
row["PageFile"] = "Logout.aspx";
row["DisplayName"] = "Logout";
menu.Rows.Add(row);

return menu;
}
}

效果很好,但我也需要子菜单。

有没有办法以某种方式为每个项目设置中继器,或者有更好的方法吗?

谢谢

最佳答案

你可以使用嵌套的中继器:

<asp:Repeater ID="rptFirstLevel" runat="server">
<ItemTemplate>
<!-- first level html -->
<asp:Repeater ID="rptSecondLevel" DataSource='<%# DataBinder.Eval(Container.DataItem, "Children") %>' runat="server">
<ItemTemplate>
<!-- second level html -->
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>

在您的代码中,只需确保您正确地对第一个转发器进行了数据绑定(bind)。

rptFirstLevel.DataSource = menu;
rptFirstLevel.DataBind();

并且您的 menu 对象包含 Children 集合。这只是众多可能解决方案中的一种。希望对您有所帮助。

关于c# - 使用下拉菜单制作动态菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14611891/

25 4 0