ASP.NET:具有Repeater控件的表和用于其中的交替数据

时间:2018-07-31 21:23:13

标签: html asp.net webforms

我有一项任务,将我们的一页从具有三列的单个表移到两个表,这些表显示相同的数据集,但被挤压在一起并交替显示。因此,如果我今天的数据集显示为

enter image description here

新数据集看起来像 enter image description here

到目前为止,我可以交替使用表数据,但是之后无法开始新行。

<asp:Repeater ID="fruitRep" runat="server" EnableViewState="false">
            <HeaderTemplate>
            <table>
                <thead>
                <tr align="center">
                    <th>Line</th>
                    <th>Fruit</th>
                    <th>Cost</th>    
                    <th class ="ghostColumn">Blank</th>    
                    <th>Line</th>
                    <th>Fruit</th>
                    <th>Cost</th>
                </tr>
                </thead>
            </HeaderTemplate>

        <ItemTemplate>
                <td><%= LineCounter %></td>
                <td>
                    <%# DataBinder.Eval(Container.DataItem, Fruit")%>
                </td>
                <td>
                    <%# DataBinder.Eval(Container.DataItem, PerUnitCost")%> 
                </td>
                <td class ="ghostColumn">...</td>
        </ItemTemplate>
        <AlternatingItemTemplate>
                <td><%= LineCounter %></td>
                <td>
                    <%# DataBinder.Eval(Container.DataItem, Fruit")%>
                </td>
                <td>
                    <%# DataBinder.Eval(Container.DataItem, PerUnitCost")%> 
                </td>
        </AlternatingItemTemplate>
        <FooterTemplate>
            </table>
        </FooterTemplate>
    </asp:Repeater>

2 个答案:

答案 0 :(得分:2)

如果要在同一表中包含标题和项目,则可以执行此操作。使用Container.ItemIndex %2 == 0来写行的开头或结尾。

<table border="1">
    <tr>
        <th>Line</th>
        <th>Fruit</th>
        <th>Cost</th>
        <th>&nbsp;</th>
        <th>Line</th>
        <th>Fruit</th>
        <th>Cost</th>
    </tr>

    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>

            <%# Container.ItemIndex %2 == 0 ? "<tr>" : "" %>

            <td><%# Container.ItemIndex + 1 %></td>
            <td><%# Eval("Ride_id") %></td>
            <td><%# Eval("naam") %></td>

            <%# Container.ItemIndex %2 == 0 ? "<td></td>" : "</tr>" %>

        </ItemTemplate>
    </asp:Repeater>

</table>

答案 1 :(得分:0)

虽然仍然需要一些样式,但是您的代码可能就这么简单:

<!-- you'll have to create the column headers outside the DataList -->
<table>
    <tr>
        <td>Line</td><td>Fruit</td><td>Cost</td>
        <td>&nbsp;</td>
        <td>Line</td><td>Fruit</td><td>Cost</td>
    </tr>
</table>

<asp:DataList ID="fruitRep" RepeatColumns="2" RepeatDirection="Horizontal" RepeatLayout="Table" runat="server">
    <ItemTemplate>
        <%# Container.ItemIndex + 1 %></td>
        <td><%# DataBinder.Eval(Container.DataItem, "Fruit") %></td>
        <td><%# DataBinder.Eval(Container.DataItem, "PerUnitCost") %>
    </ItemTemplate>
    <SeparatorTemplate>&nbsp;</SeparatorTemplate>
</asp:DataList>

请注意,我在表格单元格中捏入了封闭的ItemTemplate,该模板本身创建了一个开始和结束的表格单元格。