Asp.net 如何在中继器中每行显示x个项目?
有人知道如何用中继器水平显示4个项目吗?默认情况下,中继器会显示正在下降的项目。以下是我到目前为止的测试中继器代码:Asp.net 如何在中继器中每行显示x个项目?,asp.net,Asp.net,有人知道如何用中继器水平显示4个项目吗?默认情况下,中继器会显示正在下降的项目。以下是我到目前为止的测试中继器代码: <table border=0 cellpadding=0 cellspacing=0 align="center" width="800px;> <tr> <asp:Repeater ID="rptTest" runat="server"> <ItemTemplate>
<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>
尝试为您的
标记设置CSS类,并设置显式宽度。使用带有RepeatColumns属性的DataList控件可能更简单:
DataList1.RepeatColumns = 4;
DataList1.RepeatDirection = RepeatDirection.Horizontal;
Scott Guthrie在下面提供了一个如何使用ListView控件执行此操作的示例。他使用控件呈现无序列表,并使用CSS控制布局。使用列表视图
... 单元格内容省略。。。
谦逊的重复者万岁 这可能会起作用(我假设您可能有多行四幅图像):
(没有未经测试的IDE:)
如果没有帮助,可能会有一些答案。修改Nick的建议,我可以用它制作5个水平x n垂直图像网格。谢谢你,尼克
<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>
这是表格数据,还是您只想在4列多行网格中显示的数据?比如图片缩略图。总之,我想使用一个转发器,没有别的。这是表格数据,但图片和文本,而不仅仅是用于在网格中显示产品的文本,每行4个。不错的选择-有一种将项目分组在一起的能力+1那是毫无意义的。默认情况下,转发器将向下重复,即使每个项目的宽度都很窄。事实并非如此,转发器模板的要点是呈现您自己的自定义HTML,而解释如何呈现它的是浏览器。所有这些都是关于发送到浏览器的HTML是如何构造的,以及定义了哪些规则来告诉浏览器如何正确呈现的。@Jeff Sternal我尝试了你的解决方案,但它给了我错误,为什么?@Alaa:如果你在这里提供更多信息或将其作为问题发布,我将有更好的机会帮助你。
<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>
<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>
<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>
protected string ColorThumbnailImage(string fileName)
{
return Request.ApplicationPath + MySports.System.Configuration.ColorSquareImageLocation + fileName;
}