代码之家  ›  专栏  ›  技术社区  ›  JohnnyTheJet

ASP.NET:具有中继器控制和交替数据的表

  •  0
  • JohnnyTheJet  · 技术社区  · 7 年前

    我有一个任务,将我们的一个页面从一个具有三列的表移动到两个表中,这个表显示相同的数据集,但压缩在一起并交替显示。所以如果我今天的数据集显示为

    新的数据集看起来像

    到目前为止,我可以将表数据替换为其他数据,但是我不能再开始新的行。

    <asp:repeater id=“水果rep”runat=“server”enableViewState=“false”>
    <headerTemplate>
    表;
    THEAD & GT;
    <tr align=“center”>
    <th>行</th>
    <th>水果</th>
    <th>成本</th>
    <th class=“ghostcolumn”>空白</th>
    <th>行</th>
    <th>水果</th>
    <th>成本</th>
    & LT/TR & GT;
    &THEAD & GT;
    </headertemplate>
    
    <项目模板>
    <td><%=linecounter%></td>
    TD & GT;
    <%databinder.eval(container.dataitem,fruit”)%>
    &T/GT;
    TD & GT;
    <%databinder.eval(container.dataitem,perUnitCost”)%>
    &T/GT;
    <td class=“ghostcolumn”>…</td>
    </itemtemplate>
    <AlternatingItemTemplate>
    <td><%=linecounter%></td>
    TD & GT;
    <%databinder.eval(container.dataitem,fruit”)%>
    &T/GT;
    TD & GT;
    <%databinder.eval(container.dataitem,perUnitCost”)%>
    &T/GT;
    </AlternatingItemTemplate>
    <footerTemplate>
    &表;
    </footerTemplate>
    </asp:转发器>
    < /代码> <交替进行。所以如果我今天的数据集显示为

    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 回复  |  直到 7 年前
        1
  •  2
  •   VDWWD    7 年前

    如果希望标题和项目在同一个表中,可以这样做。使用 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>
    
        2
  •  0
  •   Filburt kukabuka    7 年前

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

    <!-- 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中,它本身创建了一个开始和结束的表单元格。

    推荐文章