2

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

<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 中。

4

1 回答 1

2

你没有错过任何明显的东西。根据我使用嵌套中继器/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 来查找它的嵌套转发器。祝你好运!

于 2012-10-23T21:31:06.977 回答