在每行独特的转发器中显示项目?

时间:2018-03-14 08:48:57

标签: asp.net webforms repeater

我有转发器我想显示所有项目,如下面的输出,但所有项目都是重复的,每行应该是唯一的。 应该先显示下一行显示两个大栏目的四个小样本 列 这个代码我的问题是什么?我是asp.net web forms的初学者

enter image description here

 <asp:Repeater ID="rp1" runat="server" DataSourceID="sdsItemsFilter">

             <ItemTemplate>


            <%If counter1 Mod 2 = 1 Then %>

            <div style="margin-top:10px;margin-bottom:10px">


                <%If counter1 Mod 2 = 1 Then %>
                <%for i As Int32 = 1 To 2 %>

            <div style="display:inline-block;width:300px;height:150px;border:1px solid #808080;padding:20px">


             <h1>Item <%#Eval("ItemName")%></h1>



            </div>


            <%Next %>

 <%End If %>
            </div>


            <%End If %>


            <br />  <br />

            <%If counter1 Mod 2 = 0 Then %>
            <div style="margin-top:10px;margin-bottom:10px">



                  <%for i As Int32 = 1 To 4 %>
            <div style="display:inline-block;width:150px;height:150px;border:1px solid #808080;padding:20px">


             <h1>Item <%#Eval("ItemName")%></h1>


            </div>


                <%next %>


            </div>
             <%End If %>


                 <%counter1 += 1 %>

 </ItemTemplate>

         </asp:Repeater>

2 个答案:

答案 0 :(得分:0)

这里有几个问题。

在下面的代码中,第二个If块中没有任何意义,因为您只是检查上面检查过的相同条件,因此它始终是真的。

    <%If counter1 Mod 2 = 1 Then %>
        <div style="margin-top:10px;margin-bottom:10px">
            <%If counter1 Mod 2 = 1 Then %>

项目不是唯一的,因为您不会在for循环中增加counter1。你的意思是使用循环变量吗?

<h1>Item <%=i%></h1>

答案 1 :(得分:0)

您可以在转发器中使用ItemDataBound函数,并根据条件设置其中的值。

  <asp:Repeater id="Repeater1" OnItemDataBound="R1_ItemDataBound" runat="server">
<HeaderTemplate>
         <table border="1">
            <tr>
               <td><b>Product</b></td>
               <td><b>Consumer Rating</b></td>
            </tr>
      </HeaderTemplate>

      <ItemTemplate>
         <tr>
            <td> <asp:Label Text='<%# DataBinder.Eval(Container.DataItem, "ProductID") %>' Runat="server"/> </td>
            <td> <asp:Label id="RatingLabel" Text='<%# DataBinder.Eval(Container.DataItem, "Rating") %>' Runat="server"/> </td>
         </tr>
      </ItemTemplate>

      <FooterTemplate>
         </table>
      </FooterTemplate>

     public void R1_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
     {
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == 
  ListItemType.AlternatingItem) {

         if (((Evaluation)e.Item.DataItem).Rating == "Good") {
            ((Label)e.Item.FindControl("RatingLabel")).Text= "<b>***Good***</b>";
         }
      }

}

与此示例一样,您可以绑定不同的数据。