C# 在asp.net中使用嵌套中继器

C# 在asp.net中使用嵌套中继器,c#,javascript,asp.net,c#-4.0,C#,Javascript,Asp.net,C# 4.0,我想用asp.net repeater做一个自定义菜单。我正在获取我的数据SiteMap.RootNode.ChildNodes,它是ChildNodes asp.net: <asp:Repeater runat="server" ID="rep1" OnItemDataBound="rpt1_ItemDataBound"> <HeaderTemplate> <ul> </HeaderTemplate> &l

我想用asp.net repeater做一个自定义菜单。我正在获取我的数据
SiteMap.RootNode.ChildNodes
,它是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>
如何做到这一点?请帮帮我


编辑:

如果您只有两个层次结构级别,那么您已经完成了一半:使用
ItemDataBound
事件设置内部中继器的数据源:
((中继器)FindControl('rep2'))。数据源=


如果您有多个/未知的层次结构级别,唯一的方法就是从代码隐藏中创建它们。您可以使用面板作为容器,以友好方式创建中继器并将父中继器添加到面板中,如:
Panel1.Controls.add(rep1)

我将rep2的数据源设置为示例数据,但它没有显示调用
rpt.DataBind()protected void Page_Load(object sender, EventArgs e)
{
      rep1.DataSource = SiteMap.RootNode.ChildNodes;
      rep1.DataBind();
}

protected void rpt1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
}