7

次のようなクラス構造があるとします。

public class A
{
    public string Poperty1 { get; set; }
    public string Poperty2 { get; set; }
    public List<B> Property3 { get; set; }
}

public class B
{
    public string Property4 { get; set; }
    public string Property5 { get; set; }
}

...そして、次のようないくつかのネストされたリピーター:

<asp:Repeater ItemType="A" runat="server">
    <ItemTemplate>
        <asp:Label Text="<%# Item.Property1 %>" runat="server" />
        <asp:Repeater runat="server" DataSource="<%# Item.Property3 %>" ItemType="B">
            <ItemTemplate>
                <asp:Label Text="<%# Item.Property4 %>" runat="server" />
            </ItemTemplate>
        </asp:Repeater>
    </ItemTemplate>
</asp:Repeater>

2 番目のリピーターから Property2 にアクセスするにはどうすればよいですか?

4

4 に答える 4

1

内部リピーターの DataSource を設定する場合:

DataSource='<%# Eval("Property3") %>'

値を設定するときは、一重引用符に注意してください。

于 2015-09-09T21:53:24.830 に答える
0

親リピーターのアイテムを別の変数に割り当てることができます。

<script runat="server">
    A parentItem;
</script>
<asp:Repeater ItemType="A" runat="server">
    <ItemTemplate>
        <%# parentItem = Item %>
        <asp:Label Text="<%# Item.Property1 %>" runat="server" />
        <asp:Repeater runat="server" DataSource="<%# Item.Property3 %>" ItemType="B">
            <ItemTemplate>
                <asp:Label Text="<%# parentItem.Property4 %>" runat="server" />
            </ItemTemplate>
        </asp:Repeater>
    </ItemTemplate>
</asp:Repeater>

データバインディング式での割り当ては、html で式の ToString 値をレンダリングすることに注意してください。タイプの ToString メソッドを上書きするAか、代わりに を返すヘルパー関数で代入をラップすることができますnull

于 2020-12-14T14:09:40.647 に答える