Repeater ItemTemplate Container.DataItem是一个数组

问题描述 投票:0回答:2

我有一个返回列表数据的服务..“类”中的一个列也是一个列表。 ParamName和ParamValue实际上需要来自列表参数。

我可以在ItemTemplate中放置转发器吗?如果是的话,我无法让它工作,请指出正确的方向。

<asp:Repeater id="RepeaterData" runat="server">
    <HeaderTemplate>
        <table border="1">
        <tr>
            <td><b>Name</b></td>
            <td><b>CreatedDate</b></td>
            <td><b>ParamName</b></td>
            <td><b>ParamValue</b></td>
        </tr>
    </HeaderTemplate>

    <ItemTemplate>
        <tr>
            <td><%# DataBinder.Eval(Container.DataItem, "FullName") %></td>
            <td><%# DataBinder.Eval(Container.DataItem, "CreatedDate") %></td>
        <td>
            <asp:Repeater runat="server" id="RepeateParameters" DataSource="<%# DataBinder.Eval(Container.DataItem, "Parameters") %>">
            <ItemTemplate><%# DataBinder.Eval(Container.DataItem, "ParamName") %><br /></ItemTemplate>
            </asp:Repeater>
        </td>
        <td>
            <asp:Repeater runat="server" id="Repeater1" DataSource="<%# DataBinder.Eval(Container.DataItem, "Parameters") %>">
            <ItemTemplate><%# DataBinder.Eval(Container.DataItem, "ParamValue") %><br /></ItemTemplate>
            </asp:Repeater>
        </td>
        </tr>
    </ItemTemplate>

    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>
asp.net
2个回答
1
投票

您可以轻松使用嵌套中继器。如果它是列表中的列表,您甚至不需要对后面的代码进行修改。此示例使用强类型中继器。

<asp:Repeater ID="Repeater1" runat="server" ItemType="MyNameSpace.TestClass">
    <ItemTemplate>

        <%# Item.Name %>

        <ul>
            <asp:Repeater ID="Repeater2" runat="server" ItemType="MyNameSpace.TestClass" DataSource='<%# Item.NestedList %>'>
                <ItemTemplate>

                    <li><%# Item.ID %> <%# Item.Date.ToShortDateString() %></li>

                </ItemTemplate>
            </asp:Repeater>
        </ul>

        <hr />

    </ItemTemplate>
</asp:Repeater>

该课程只是为了完成演示。

public class TestClass
{
    public int ID { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public DateTime Date { get; set; }
    public bool Deleted { get; set; }
    public List<TestClass> NestedList { get; set; }
}

0
投票

这是最终的代码:

<asp:Repeater id="RepeaterData" runat="server" ItemType="accounts.AuditEntry">
    <HeaderTemplate>
        <table border="1">
        <tr>
            <td><b>UsersFullName</b></td>
            <td><b>CreatedDate</b></td>
            <td><b>ParamName</b></td>
            <td><b>ParamValue</b></td>
        </tr>
    </HeaderTemplate>

    <ItemTemplate>
        <tr>
            <td></td>
            <td><%# Item.UsersFullName %></td>
            <td><%# Item.CreatedDate %></td>
            <td>
                <asp:Repeater ID="Repeater2" runat="server" ItemType="accounts.ParamInfo" DataSource='<%# Item.Parameters %>'>
                <ItemTemplate><%# Item.ParamName %><br /></ItemTemplate>
                </asp:Repeater>
            </td>
            <td>
                <asp:Repeater ID="Repeater3" runat="server" ItemType="accounts.ParamInfo" DataSource='<%# Item.Parameters %>'>
                <ItemTemplate><%# Item.ParamValue %><br /></ItemTemplate>
                </asp:Repeater>
            </td>
        </tr>
    </ItemTemplate>

    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>
© www.soinside.com 2019 - 2024. All rights reserved.