1

我想用 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)
{
}

这该怎么做?请帮我。

编辑 :在此处输入图像描述

4

1 回答 1

2

如果您只有两个层次结构级别,那么您已经完成了一半:使用ItemDataBound事件为内部中继器设置 DataSource:((Repeater)FindControl('rep2')).DataSource = <proper data>;

如果您有多个/未知的层次结构级别,唯一的方法是从后面的代码中创建它们。您可以使用 Panel 作为容器,动态创建转发器并将父级添加到面板中,例如:Panel1.Controls.Add(rep1);

于 2013-01-02T15:09:24.097 回答