我有一个返回列表数据的服务。“类”中的列之一也是列表。实际上,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>
答案 0 :(得分: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; }
}
答案 1 :(得分: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>