下午好。
我有一个带有ItemTemplate的Repeater,它打印一个包含数据的列。
<asp:Repeater id="OtherProductsRepeater" runat="server">
<ItemTemplate>
(...data...)
</ItemTemplate>
</asp:Repeater>
如何修改代码而不是一列创建三列来显示数据?
提前致谢。
答案 0 :(得分:5)
编辑显示使用转发器制作三列布局
<table>
<asp:Repeater id="OtherProductsRepeater" OnItemCreated="OtherProductsRepeater_ItemCreated" runat="server">
<ItemTemplate>
<asp:PlaceHolder id="row_end" visible="<%# _showRowEnd %>" runat="server">
</tr>
</asp:PlaceHolder>
<asp:PlaceHolder id="row_start" visible="<%# _showRowStart %>" runat="server">
<tr>
</asp:PlaceHolder>
<td>(data)</td>
<td>(data)</td>
<td>(data)</td>
</ItemTemplate>
</asp:Repeater>
</tr> <%-- close final row --%>
</table>
在您的代码中,您需要这些页面级成员:
private int _rowCounter = 0;
protected bool _showRowEnd;
protected bool _showRowStart;
和事件处理程序:
protected void OtherProductsRepeater_ItemCreated(Object Sender, RepeaterItemEventArgs e) {
if (_rowCounter == 0) { // first row
_showRowStart = true;
_showRowEnd = false;
_rowCounter = 1;
}
else if (_rowCounter == 3) {
_showRowStart = true;
_showRowEnd = true;
_rowCounter = 1;
}
else {
_showRowStart = false;
_showRowEnd = false;
_rowCounter += 1;
}
}
另一个想法 - 如果你在谈论报纸式的列,其中内容从一列的底部流向下一列的顶部,使用DataList控件而不是转发器。
答案 1 :(得分:1)
请确保在visible=false
或item.count=0
<asp:Repeater id="OtherProductsRepeater" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>(data)</td>
<td>(data)</td>
<td>(data)</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
答案 2 :(得分:0)
如果您使用的是ASP.net 3.5或更高版本,则应使用 ListView 和 GroupTemplate 。
例如代码,请参阅...