![](/img/trans.png)
[英]Generate Nested Menu from datatable using c# as ul list not Asp.net Menu control
[英]ASP Control unordered list UL with nested list
我嘗試了Menu,TreeView,BulletedList,Repeater,HtmlGenericControl,但沒有結果。
我想擁有的是呈現某些內容的asp控件:
<ul>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a>
<ul>
<li><a href="#">Item 2.1</a></li>
</ul>
</li>
</ul>
例如,菜單使SPAN沒有UL。
<asp:Menu runat="server">
<Items>
<asp:MenuItem Text="Item 1" />
<asp:MenuItem Text="Item 2">
<asp:MenuItem Text="Item 2.1" />
</asp:MenuItem>
</Items>
</asp:Menu>
我也試過
<asp:Menu RenderingMode="MenuRenderingMode" />
但這不起作用。 我正在使用ASP.NET 3.5。
我需要創建動態ul列表,單擊項目后,它將在db中檢查是否存在嵌套項目,並將它們作為嵌套ul添加到單擊的列表中。
由於性能原因,我無法一次渲染整個菜單。
對不起,如果我不太清楚。 感謝幫助。
您需要使用嵌套的中繼器:
<asp:Repeater ID="rptFoo" runat="server" OnItemDataBound="rptFoo_ItemDataBound">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<asp:HyperLink ID="lnkFoo" runat="server" />
<asp:Repeater ID="rptBar" runat="server" OnItemDataBound="rptBar_ItemDataBound">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li><asp:HyperLink ID="lnkBar" runat="server" /></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
然后在ItemDataBound
處理程序中,您需要檢查每個頂級項目是否都有子元素(如果有),將這些元素分配給子轉發器並進行數據綁定,否則將其隱藏。
protected void rptFoo_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
FooType obj = (FooType)e.Item.DataItem;
Repeater rptBar = (Repeater)e.Item.FindControl("rptBar");
if(obj.Children.Count() > 0)
{
rptBar.DataSource = obj.Children;
rptBar.DataBind();
}
else
{
rptBar.Visible = false;
}
}
}
如果只需要從代碼后面訪問ul
和li
元素,則可以輕松地向它們添加runat="server"
屬性。 為了能夠引用單個元素, id
屬性是必需的:
<ul id="mainMenu" runat="server">
<li id="mainMenuItem1" runat="server"><a href="#">Item 1</a></li>
<li id="mainMenuItem2" runat="server"><a href="#">Item 2</a>
<ul id="subMenu" runat="server">
<li id="subMenuItem1" runat="server"><a href="#">Item 2.1</a></li>
</ul>
</li>
</ul>
也可以使用HtmlGenericControl
從代碼隱藏中構建此結構。
另一個選擇是使用用戶控件: http : //msdn.microsoft.com/zh-cn/library/y6wb1a0e%28v=vs.100%29.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.