例外页面大小分页分层数据时
问题描述:
我有一个显示数据的非常大名单的网页。由于浏览器陷入困境,我实现了分页(使用PagedDataSource)一次显示20个Marbles。例外页面大小分页分层数据时
我的数据模型是这样的一个袋子包含多个弹珠,并在我的中继器上显示袋子信息的小标题,然后显示它下面的所有大理石。
过于简单的例子:
Bag1 some Bag specific data -------------------------------------- MarbleA 328 Some St. USA MarbleB 364 another ave. USA MarbleC 7878 Whatever Way USA Bag2 some Bag specific data -------------------------------------- MarbleD 684 Dummy Dr. USA etc.
的问题是,因为我的页面大小为20,我可以切断袋的大理石上一个页面的结束。 (想象一下MarbleB是第20个元素。)这导致剩下的大理石溢出到下一页的顶部。
是否有任何优雅的方法来检查这个问题,还是我将不得不实施自己的分页并添加一个“向前看,直到下一个包”的逻辑?
编辑: 假设C#2.0,VS2008,SQL 2005
答
你可以处理一些它与您的SQL查询(假设SQL Server 2005中)。如果您引入RANK,您可以确定每个结果占用了多少行。这里有可能是一个存储过程中的样品查询:
SELECT RANK() OVER (ORDER BY b.BagID) as RowNum, b.BagID, b.BagInfo, m.MarbleInfo
FROM Bag b
JOIN Marble m ON m.BagID = b.BagID
WHERE b.BagID > @BagID
@BagID将是“开始” BagID(最初-1),你可以与先前结束BagID如果你想调用它。
结果会是这个样子:
1,1,1
1,1,2
1,1,3
4,2,4
4,2,5
6,3,6
...
在您的分页,你可以做的ROWNUM列检查,看看它的页面大小的限制之内。当然,退会如果您有大量的在它的弹珠一包等
编辑:如果RANK功能不提供给您的RDBMS中,类似的结果可以完成在临时表中使用临时表和游标。
此功能被推回,但一旦我回到它,这可能是我尝试的方法(至少对于第1轮)。 谢谢。 – 2009-07-13 14:21:56