我为我的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中。
答案 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来查找它的嵌套转发器。祝你好运!