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リピーターに入る方法がわかりませんでした。

ここで明らかな何かが欠けていますか?私は.NET2.0を使用しています。

4

1 に答える 1

2

明らかなことを見逃しているわけではありません。私の経験では、ネストされたRepeaters / 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 に答える