看到一个文章关于C# 高效分页,但其中有几个问题不明白。
http://www.shangxueba.com/jingyan/104396.html
SQL
SELECT PriceRank, ProductName, UnitPrice
FROM
(SELECT ProductName, UnitPrice,
ROW_NUMBER() OVER(ORDER BY UnitPrice DESC) AS PriceRank
FROM Products
) AS ProductsWithRowNumber
WHERE PriceRank > StartRowIndex AND PriceRank <= (StartRowIndex + MaximumRows)
1、比如说有31条记录 ,分页 会 分成3个页面,
第一页 1--10条记录
第二页 11-20 条记录
第三页 21 条记录
按他们说的是第一页 StartRowIndex 和 MaximumRows 应该是多少?
StartRowIndex=1 StartRowIndex+MaximumRows=11?
如果这样,那SQL 语句 不就是 >1 and <=11了? 显示变以了2-11条记录?
MaximumRows 是每页显示的条数? 是说我设置了一页显示10条记录,那么
MaximumRows=10?
一共21条记录,那第三页的时候 难道是 >21 and <=31?
Start Row Index – 页面里显示数据的第一行的索引; 这个值可以通过页的索引乘每 页显示的记录的条数加1得到. 例如, 如果一页显示10条数据, 那么对第一页来说 (第一页的索引为0), 第一行的索引为0 * 10 + 1, or 1; 对第二页来说(索引为 1), 第一行的索引为1 * 10 + 1,即 11.
Maximum Rows – 每页显示 的最多记录的条数. 之所以称为“maximum” rows 是由于最后一页显 示的数据可能会比page size要小. 比如, 当以每页10条记录来显示81条时, 最后 一页也就是第九页只包含一条记录. 没有页面显示的记录条数会大于Maximum Rows 的值.
原文中已经说了“ObjectDataSource 提供的StartRowIndex是从0开始的,而ROW_NUMBER()的值从1开 始.”
那他说的 这个
Start Row Index – 页面里显示数据的第一行的索引; 这个值可以通过页的索引乘每 页显示的记录的条数加1得到. 例如, 如果一页显示10条数据, 那么对第一页来说 (第一页的索引为0), 第一行的索引为0 * 10 + 1, or 1; 对第二页来说(索引为 1), 第一行的索引为1 * 10 + 1,即 11.
就是不对了吧
如果是0 开始
那是不是
第一页就是 >0 and <=10 呀?
第二页就是 >10 and <=20?
第三页呢, >21 and <= ? 30 还是31?
试试Moon.Orm的分页