2009-11-19 23 views
5

Bất cứ ai có bất kỳ đầu mối nào về cách hiển thị 4 mục đi ngang với bộ lặp? Một bộ lặp lại hiển thị các mục đi xuống theo mặc định. Đây là mã lặp lại thử nghiệm của tôi cho đến thời điểm này:Làm cách nào để hiển thị x mục trên mỗi hàng trong bộ lặp?

<table border=0 cellpadding=0 cellspacing=0 align="center" width="800px;> 
    <tr> 
     <asp:Repeater ID="rptTest" runat="server"> 
      <ItemTemplate> 
        <td> 
         <h3><a href="<%#GetItemLink((Item)Container.DataItem) %>"><%#((WebMenuItem)Container.DataItem).Name %></a></h3> 
         <div> 
          <a href="<%#GetUrl((Item)Container.DataItem) %>"> 
           <img src="<%#GetImage((Item)Container.DataItem) %>" alt="<%#GetAltText((Item)Container.DataItem) %>" /> 
          </a> 
         </div> 
        </td> 
      </ItemTemplate> 
     </asp:Repeater> 
    </tr> 
</table> 
+0

Dữ liệu này có dạng bảng, hoặc dữ liệu mà bạn chỉ muốn hiển thị trong một cột 4, nhiều lưới hàng? Ví dụ như hình thu nhỏ hình ảnh. –

+0

Tất cả, tôi muốn sử dụng một bộ lặp lại, không có gì khác. – PositiveGuy

+0

đây là dữ liệu dạng bảng nhưng hình ảnh và văn bản, không chỉ văn bản để hiển thị các sản phẩm trong lưới, 4 mỗi hàng. – PositiveGuy

Trả lời

0

Cố gắng đặt lớp CSS cho các thẻ <td> của bạn và đặt chiều rộng rõ ràng.

+0

không có vòng bi. Một bộ lặp sẽ lặp lại theo mặc định ngay cả khi chiều rộng bị chặt trên mỗi mục. – PositiveGuy

+1

không đúng, điểm của mẫu Repeater là hiển thị HTML tùy chỉnh của riêng bạn và trình duyệt giải thích cách hiển thị nó. Đó là tất cả về cách HTML được gửi đến trình duyệt được xây dựng và những quy tắc nào được định nghĩa để cho trình duyệt biết cách hiển thị đúng cách. – jaywon

2

Sử dụng kiểm soát DataList với tài sản RepeatColumns có thể đơn giản hơn:

DataList1.RepeatColumns = 4; 
DataList1.RepeatDirection = RepeatDirection.Horizontal; 
3

Scott Guthrie cung cấp một ví dụ về làm thế nào để làm điều này với một điều khiển ListView trong article sau. Ông sử dụng điều khiển để hiển thị một danh sách không có thứ tự và sử dụng CSS để kiểm soát bố cục.

+0

Lựa chọn tốt - có khả năng nhóm các mục với nhau ... +1 – IrishChieftain

+0

Điều tôi cũng nghĩ. –

2

Sử dụng một ListView http://msdn.microsoft.com/en-us/library/bb398790.aspx

<asp:ListView runat="server" ID="ListView1" 
    DataSourceID="SqlDataSource1" 
    GroupItemCount="5"> 
    <LayoutTemplate> 
    <table runat="server" id="table1"> 
     <tr runat="server" id="groupPlaceholder"> 
     </tr> 
    </table> 
    </LayoutTemplate> 
    <GroupTemplate> 
    <tr runat="server" id="tableRow"> 
     <td runat="server" id="itemPlaceholder" /> 
    </tr> 
    </GroupTemplate> 
    <ItemTemplate> 
    <td runat="server"> 
     <%-- Data-bound content. --%> 
     <asp:Label ID="NameLabel" runat="server" 
      Text='<%#Eval("Name") %>' /> 
    </td> 
    </ItemTemplate> 
</asp:ListView> 
20
<table> 
    <asp:Repeater id="rptTest" runat="server"> 
     <ItemTemplate> 
      <%# (Container.ItemIndex + 4) % 4 == 0 ? "<tr>" : string.Empty %> 
       <td> 
        ... cell contents omitted ... 
       </td> 
      <%# (Container.ItemIndex + 4) % 4 == 3 ? "</tr>" : string.Empty %> 
     </ItemTemplate> 
    </asp:Repeater> 
</table> 

Long sống lặp lại khiêm tốn!

+0

Tuyệt vời, bạn đã cứu ngày của tôi! – magnattic

+0

@Jeff Sternal Tôi đã thử giải pháp của bạn, nhưng nó cho tôi lỗi, tại sao? – Alaa

+0

@Alaa: nếu bạn cung cấp thêm một số thông tin tại đây hoặc đăng thông tin dưới dạng câu hỏi, tôi sẽ có cơ hội trợ giúp bạn tốt hơn. –

0

Điều này có thể thực hiện công việc (tôi giả sử bạn có thể có nhiều hơn một hàng bốn hình ảnh):

<asp:Repeater ID="rptTest" runat="server"> 

<HeaderTemplate> 
<table border=0 cellpadding=0 cellspacing=0 align="center" width="800px"> 
<tr> 
</HeaderTemplate> 

<ItemTemplate> 
<%# (Container.ItemIndex != 0 && Container.ItemIndex % 4 == 0) ? @"</tr><tr>" : string.Empty %> 
<td> 
<h3><a href="<%#GetItemLink((Item)Container.DataItem) %>"><%# (WebMenuItem)Container.DataItem).Name %></a></h3> 
<div> 
<a href="<%#GetUrl((Item)Container.DataItem) %>"><img src="<%#GetImage((Item)Container.DataItem) %>" alt="<%#GetAltText((Item)Container.DataItem) %>" /></a> 
</div> 
</td> 
</ItemTemplate> 

<FooterTemplate> 
</tr> 
</table> 
</FooterTemplate> 

</asp:Repeater> 

(không có IDE nên chưa được kiểm tra :)

Nếu nó không giúp , một số câu trả lời từ this question có thể.

4

Sửa đổi đề xuất của Nick Tôi đã có thể sử dụng để tạo 5 Hình ảnh dọc theo chiều ngang x n. Cảm ơn Nick!

<asp:Repeater ID="colorsList" runat="server"> 
    <HeaderTemplate> 
     <table> 
     <tr> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <%# (Container.ItemIndex != 0 && Container.ItemIndex % 5 == 0) ? @"</tr><tr>" : string.Empty %> 
     <td> 
     <div><img src="<%#ColorThumbnailImage((string)DataBinder.Eval(Container.DataItem, "COLOR_SQUARE_IMAGE")) %>" /></div> 
     <div><%# DataBinder.Eval(Container.DataItem, "COLOR_NAME") %></div> 
     </td> 
    </ItemTemplate> 
    <FooterTemplate> 
     </tr></table> 
    </FooterTemplate> 
    </asp:Repeater> 

Và đây là ColorThumbnailImage

protected string ColorThumbnailImage(string fileName) 
{ 
    return Request.ApplicationPath + MySports.System.Configuration.ColorSquareImageLocation + fileName; 
} 
Các vấn đề liên quan