2011-09-01 27 views
1

我有一個綁定到列表(T)對象集合的中繼器。這是Inventory對象的列表。每個Inventory對象還包含一個List(of T),它是一個Date/Inventory Count對的列表。當中繼器創建表格時,我需要爲每個日期/庫存計數創建一個TD。由於日期/庫存計數的數量直到運行時才被設置(使用NumWeeks變量),所以我需要改變我的轉發器中TD的數量。實際上,這就是我想要的:如何使用REPEATER中的FOR循環在<TABLE>中創建<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

內的任何地方有關於這一個很好的答案,這裏討論的計算器在http://stackoverflow.com/q/2545801/550514 –

回答

4

您需要將另一箇中繼轉發這裏面並指定數據源到內部中繼父轉發的「的ItemDataBound」事件。這應該可以解決你的問題。

希望這是有幫助的!

+0

+1一個關於「asp.net嵌套中繼器」的網絡搜索應該爲你提供很多結果(其中一些甚至可能有用!)。 – mikemanne

+0

謝謝!這是解決方案: – Jason

0

另一種選擇是創建一個包含內部循環Repeater的UserControl。您可以將「值」分配爲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> 
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> 
相關問題