【问题标题】:ASP.NET: Table with Repeater control and alternating data in same forASP.NET:具有Repeater控件和交替数据的表
【发布时间】:2018-07-31 21:23:13
【问题描述】:

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

新的数据集看起来像

到目前为止,我可以让表格数据交替出现,但我不能再开始新的一行。

<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>

【问题讨论】:

    标签: html asp.net webforms


    【解决方案1】:

    如果您希望标题和项目在同一个表中,您可以这样做。使用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】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多