Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在中继器中每行显示x个项目?_Asp.net - Fatal编程技术网

Asp.net 如何在中继器中每行显示x个项目?

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>

有人知道如何用中继器水平显示4个项目吗?默认情况下,中继器会显示正在下降的项目。以下是我到目前为止的测试中继器代码:

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