如果我需要分页支持,我应该使用ListView还是Repeater?

时间:2009-08-04 15:12:41

标签: c# .net asp.net

如果我需要分页支持,我应该使用ListView还是Repeater?

我可以使用带有ListView的DataPager控件,但不能使用Repeater。

那么最佳选择是什么?为什么?

6 个答案:

答案 0 :(得分:3)

自.NET 1.1起以来,我没有比较各种数据可视化控件的性能。但是,如果您计划在一组非常大的数据上使用其中一个控件,那么需要注意一些事项。

中继器具有最简单,最简单的功能,并且不会向您没有明确指示的标记添加任何内容。如果你给它一个datareader作为它的数据源,那么它可能是最高性能的组合(虽然最缺乏功能)。

我想这并不能完全回答你的问题,但提出了更多问题。

但是......是否值得努力创建自定义分页,或使用listview / datapager组合的内置功能?有时,我认为值得定制。

有一点需要担心的是,DataPager控件在页面之间导航时会使用回发。

IMO,回发是一种处理分页的糟糕方式。原因如下:

1。)用户无法在背面和背面的页面之间导航。在浏览器历史记录中转发按钮,而不会收到有关重新提交表单数据的恼人消息。

2。)搜索引擎无法单独索引每个结果页面,因为它们都使用相同的URL。

至少使用自定义解决方案,您可以通过对每个页面使用查询字符串来解决所有问题。

我在回答this question时谈到了其中一些相同的问题。

答案 1 :(得分:1)

imho ListView通常更好,因为您可以更好地自定义它。

答案 2 :(得分:1)

您还可以使用PagedDataSource

在Repeater中进行分页

答案 3 :(得分:1)

答案 4 :(得分:1)

您可以使用ListView或Repeater成功 - 我认为重要的问题是您将如何实现分页?您的来源中有多少条信息记录?

将DataPager打到ListView上,设置几个属性并进行分页...以及每个页面实际查询所有记录的捕获量是非常容易的,其中大部分得到被DataPager抛出。这在很多情况下可能都很好,但是如果你有很多记录,它可能不合适。

DataPager支持自定义分页(see this),您自己进行脏工作(设置SQL语句/ sprocs实际上一次只返回结果的“页面”),但是这是一些工作。此时,除了在转发器上渲染/计算自己的分页控件/链接之外,使用Repeater并不复杂。

PagedDataSource我不太熟悉,但我不相信你可以实现自定义分页,所以它可能就像默认的DataPager(只有它也可以与DataReader一起使用)。

总而言之,ListView或Repeater都可以工作,而且非常相似。具有默认DataPager的ListView将与具有PagedDataSource的Repeater相媲美,并且具有自定义分页代码的ListView与具有滚动您自己的分页代码的Repeater相当。

答案 5 :(得分:0)

ListView被设计为Repeater的.Net 3.5替代品。如果您正在编写新代码,请使用ListView。

C#书中的Apress Pro ASP.Net对此有所了解。