我想用 asp.net 中继器做一个自定义菜单。我正在获取我的数据 SiteMap.RootNode.ChildNodes
,它是子节点。
asp.net :
<asp:Repeater runat="server" ID="rep1" OnItemDataBound="rpt1_ItemDataBound">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li class="links">
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Url") %>' Text='<%# Eval("Title") %>'></asp:HyperLink>
</li>
<%--<asp:Repeater ID="rep2" runat="server">
</asp:Repeater>--%>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
C#
protected void Page_Load(object sender, EventArgs e)
{
rep1.DataSource = SiteMap.RootNode.ChildNodes;
rep1.DataBind();
}
protected void rpt1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
}
如何做到这一点?请帮助我。
编辑:
最佳答案
如果您只有两个层级,那么您已经完成了一半:使用 ItemDataBound
为内部转发器设置数据源的事件:((Repeater)FindControl('rep2')).DataSource = <proper data>;
如果您有多个/未知的层次结构级别,唯一的方法是通过隐藏代码创建它们。您可以使用 Panel 作为容器,动态创建中继器并将父中继器添加到面板,例如:Panel1.Controls.Add(rep1);
关于c# - 在 asp.net 中使用嵌套转发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14124149/