为了实现使用C#, ADO.Net
自定义分页的解决方案,与SQL Server数据库,让我们假设以下细节:自定义分页
Total Records = 1000
Page Size = 100
这将意味着有10 pages
,我用的是查询如下:
Min and Max Id (Primary Key)
被取出使用标量查询:
Select Min(Id), Max(Id) from Table;
Select * from Table where Id >= (Min Record) and Id < (Max Record)
这里每一笔交易,Min and Max Record Value
增加页面大小,直到最大记录达到或超过实际最大值。
该解决方案对于具有连续值的自动增量/标识列可以正常工作,但让我们假设所使用的列在值中存在间隙,但它们仍可以排序,如1000 values
介于Min = 1 and Max = 3000
之间。
我有以下可能的解决办法,一个在下面SO link,其中一个额外的
RowId column
来达到同样的建议。其他选项会打开一个阅读器和阅读记录特定网页,创建一个列表,从而获取一个网页
我最好要被执行Top <PageSize>
SQL查询,在那里执行从我建议的预定义的行或值开始,而不是开始,因此我将避免创建额外的列,我可以使用断开连接的体系结构,不需要Reader。
任何建议或指针,请让我知道如果需要澄清,对于这个问题的任何细节
使用'ROW_NUMBER' –
这就是那里张贴在讨论的SO链接,但我想,以避免额外的列创建。 http://stackoverflow.com/questions/758186/how-to-get-n-rows-starting-from-row-m-from-sorted-table-in-t-sql –
你可以使用这个解决方案,但添加在顶部添加一个额外的'SELECT'以排除新列,如果这是不希望的。 –