Как я могу использовать цикл FOR внутри REPEATER для создания <TD>в <TABLE>? - PullRequest
1 голос
/ 01 сентября 2011

У меня есть повторитель, который связан с коллекцией объектов List (of T). Это список инвентарных объектов. Каждый объект Inventory также содержит список (из 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>

Ответы [ 3 ]

4 голосов
/ 01 сентября 2011

Вам необходимо поместить другой повторитель внутри этого повторителя и назначить источник данных этому внутреннему повторителю в событии ItemDataBound родительского повторителя.Это должно решить вашу проблему.

Надеюсь, что это полезно !!

0 голосов
/ 21 июня 2017

Мне нужно, чтобы для цикла я попробовал другой подход, и он работал.

в своем файле .cs я создал открытую строку и использовал ее внутри повторителя. Работает нормально.

public string somethingloop



for (int i = 0; i < dolar; i++)
        {
            somethingloop += "<i class='fa fa-dollar icon highlighted'></i>";

        }

и внутри повторителя в любом месте элемента шаблона

<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> 
0 голосов
/ 01 сентября 2011

Другой вариант - создать UserControl, содержащий Repeater для внутреннего цикла. Вы можете назначить «Значения» как свойство 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> 
...