我有一个返回列表数据的服务..“类”中的一个列也是一个列表。 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: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; }
}
这是最终的代码:
<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>