我有一个绑定到List(of T)对象集合的转发器。它是Inventory对象的列表。每个Inventory对象还包含一个List(of T),它是Date / Inventory Count对的列表。当转发器创建表时,我需要为每个日期/库存计数创建一个TD。由于日期/库存计数的数量直到运行时才设置(使用NumWeeks变量),我需要改变转发器中TD的数量。这基本上就是我想要的:
<asp:Repeater ID="rptReport" runat="server">
<ItemTemplate>
<tr>
<td><%#DataBinder.Eval(Container.DataItem, "Department")%></td>
<td><%#DataBinder.Eval(Container.DataItem, "Description")%></td>
<% For x = 0 To NumWeeks%>
<td><%#DataBinder.Eval(Container.DataItem, "Values")(x).Value()%></td>
<% Next%>
</tr>
</ItemTemplate>
</asp:Repeater>
答案 0 :(得分:4)
您需要在此转发器中放置另一个转发器,并在父转发器的“ItemDataBound”事件中将数据源分配给该内转发器。这应该可以解决您的问题。
希望这有用!!
答案 1 :(得分:0)
另一种选择是你创建一个包含内部循环的Repeater的UserControl。您可以将“Values”指定为UserControl的属性。像这样:
<asp:Repeater ID="rptReport" runat="server">
<ItemTemplate>
<tr>
<td><%# Eval("Department") %></td>
<td><%# Eval("Description") %></td>
<uc:WeekControl NumWeeks="<%#NumWeeks %>" Values='<%# EVal(Values)%> />
</tr>
</ItemTemplate>
</asp:Repeater>
答案 2 :(得分:0)
我需要那个循环我尝试了另一种方法并且它有效。
在我的.cs文件中,我创建了一个公共字符串,并在转发器中使用它。它工作正常。
public string somethingloop
for (int i = 0; i < dolar; i++)
{
somethingloop += "<i class='fa fa-dollar icon highlighted'></i>";
}
并在itemtemplate中的任何位置的转发器中
<asp:Repeater ID="rptReport" runat="server">
<ItemTemplate>
<%= somethingloop %>
<tr>
<td><%# Eval("Department") %></td>
<td><%# Eval("Description") %></td>
<uc:WeekControl NumWeeks="<%#NumWeeks %>" Values='<%# EVal(Values)%> />
</tr>
</ItemTemplate>
</asp:Repeater>