2013-01-02 143 views
1

我想用asp.net中继器做一个自定义菜单。我收到我的数据SiteMap.RootNode.ChildNodes,它是孩子节点。使用asp.net中的嵌套中继器

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) 
{ 
} 

如何做到这一点?请帮帮我。

编辑:enter image description here

回答

2

如果你只有两个层级,你是中途有:使用ItemDataBound事件来设置内部转发的数据源:((Repeater)FindControl('rep2')).DataSource = <proper data>;

如果你有多个/未知层级,唯一的办法是从后面的代码创建它们。您可以使用面板作为容器,创建中继器dinamically,并添加父面板,如:Panel1.Controls.Add(rep1);

+0

我设置rep2的数据源的示例数据,但它没有显示。 – ozkank

+0

@zkan让我看看你更新的代码。 –

+0

@ anderson.pimental http://i.imgur.com/9i3Wh.png – ozkank