【发布时间】:2012-02-01 21:02:35
【问题描述】:
我有一个需要在 aspx 页面上显示的数据的动态列表(asp .net 集合)。我希望根据列表中的项目数从左到右填充两列中的数据。在这种情况下,最好使用哪种 web 控件?
【问题讨论】:
-
我是否也可以将列长度设置为 3,以便超过 3 的列溢出到下一列?
标签: asp.net list multiple-columns
我有一个需要在 aspx 页面上显示的数据的动态列表(asp .net 集合)。我希望根据列表中的项目数从左到右填充两列中的数据。在这种情况下,最好使用哪种 web 控件?
【问题讨论】:
标签: asp.net list multiple-columns
您可以使用DataList、Repeater 或GridView。除了您的布局要求(以上所有功能都可以满足您的需求)之外,您还需要支持哪些功能(排序、过滤、分页等),这实际上是一个问题。
GridView 和 Repeater 有点重,但提供了简单的钩子来实现更高级的功能。
更新
例子:
<asp:DataList runat="server" id="dltest"
Border="1"
Font-Name="Verdana" CellPadding="4"
Font-Size="10pt"
RepeatColumns="2" >
<ItemTemplate>
<table>
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem, "Description") %>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem, "Value") %>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
注意:已根据您的需要进行了修改,但这应该可以帮助您入门。
【讨论】:
RepeatColumns 设置的用途。请参阅我发布的标记。 ItemTemplate 也分为 2 列的事实纯属巧合。
中继器可以在这种情况下工作,并为您设置样式提供很大的灵活性。
CSS
.container{margin:0; width:300px;}
.item{float:left;width:150px;height:30px;}
.clear{clear:both;width:100%; height:1px;}
ASPX
<div class="container">
<asp:Repeater ID="rptTest" runat="server">
<ItemTemplate>
<div class="item"><%#Eval("DataColumn") %></div>
</ItemTemplate>
</asp:Repeater>
<div class="clear"></div>
</div>
Eval("DataColumn") 将表示您要显示的表列的名称,您可以在代码隐藏中或使用拖放数据源控件之一设置转发器的数据源。
借助“float:left”,CSS 将使数据显示为从左到右的 2 列。容器是 300 像素宽,每个项目将是 150 像素,这应该给它两列的外观。
【讨论】:
overflow:auto,你就不需要<div class="clear"></div>,这最后有点乱。