调用嵌套的RepeaterItem

时间:2012-10-23 21:20:27

标签: c# asp.net webforms .net-2.0

我为我的XML文件构建了一个Repeater,大致如下:

<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="samplexml.xml" XPath="level1/level2" />
<asp:Repeater id="category" runat="server" DataSourceID="XmlDataSource1">

<ItemTemplate>
    <div class="category">
    <h2><%#XPath("@name") %></h2>

    <asp:Repeater id="group" runat="server" DataSource='<%# XPathSelect("group") %>'>
        <ItemTemplate>
        ...
        </ItemTemplate>
    </asp:Repeater>

    </div>
</ItemTemplate>

</asp:Repeater>

现在我正在研究如何在回发中获取每个数据。我大致了解了如何进入RepeaterItem:

foreach (RepeaterItem items in category.Items)
{   
    Output.Text += items.UniqueID + "<br />";
}

但经过大量搜索MSDN,此网站以及其他网站后,我无法弄清楚如何进入group转发器。

我错过了一些明显的东西吗?我在.NET 2.0中。

1 个答案:

答案 0 :(得分:2)

你没有遗漏任何明显的东西。根据我的经验,使用嵌套的Repeater / ListViews / Etc是一场噩梦。

如果您可以选择使用MVC执行此操作,我建议您这样做。如果没有....你最好的选择可能是熟悉FindControl。通常,您的代码看起来像这样:

protected void category_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    Repeater level2 = e.Item.FindControl("group") as Repeater;
    //you are now working with the nested repeater in a single row...  Do what you will!
}

因此,当父转发器中的行绑定时,您将不得不使用FindControl来查找它的嵌套转发器。祝你好运!