分页
sql语句
select
*
from
(select ROW_NUMBER()over(order by 字段名) as num,* from 表名) --子查询
as
t
where t.num between @start and @end;
pageIndex:当前页面(第一页,第二页,第三页....)
pageSize:每页显示几条数据
pageCount总页数=取天花板函数(数据总条数 * 1.0/pageSize)//这里的参数需要的是小数
@start=(pageIndex-1) * pageSize+1
@end=pageIndex * pageSize
注意:
pageIndex 不能小于1 and 不能大于 pageCount总页数
--------------------------------------------
数字页码条分析
每次显示10个数字(不管显示几个数字思路是不变的 通过pageIndex来计算起始数和最终数)
3 4 5 6 7 8 9 10 11 12 pageIndex=8
5 6 7 8 9 10 11 12 13 14 pageIndex=10
7 8 9 10 11 12 13 14 14 16 pageIndex=12
显示10个数字得出的结论(显示的数字不同结论也不同)
起始数字 = pageIndex - pageIndexReduce(5)
最终数字 = 起始数字 + pageIndexAdd(9)
通过循环拼接HTML字符串
for(int i=start;i<=end;i++)
1 /// <summary> 2 /// 生成数字页码条 3 /// </summary> 4 public class PageBar 5 { 6 /// <summary> 7 /// 获取数字页码条HTML字符串 8 /// </summary> 9 /// <param name="pageIndex">当前页</param> 10 /// <param name="pageCount">总页数</param> 11 /// <param name="pageIndexAdd">计算最终数需要</param> 12 /// <param name="pageIndexReduce">计算起始数需要</param> 13 /// <returns>HTML字符串</returns> 14 public static string GetPageBar(int pageIndex, int pageCount,int pageIndexAdd=9,int pageIndexReduce=5) 15 { 16 //只有一页的话不需要分页 17 if (pageCount<=1) 18 { 19 return string.Empty; 20 } 21 int startNum = pageIndex - pageIndexReduce;//起始数 22 23 //如果起始数小于1 24 if (startNum < 1) 25 { 26 startNum = 1; 27 } 28 int endNum = startNum + pageIndexAdd;//最终数 29 30 //如果最终数大于总页数 31 if (endNum>pageCount) 32 { 33 endNum = pageCount; 34 startNum = endNum - pageIndexAdd > 1 ? endNum - pageIndexAdd : 1; 35 } 36 StringBuilder sb = new StringBuilder(); 37 for (int i = startNum; i <=endNum; i++) 38 { 39 //当前页不需要加链接 40 if (i==pageIndex) 41 { 42 sb.Append(i); 43 } 44 else 45 { 46 sb.AppendFormat("<a href='?pageIndex={0}'>{0}</a>",i); 47 } 48 } 49 return sb.ToString(); 50 } 51 52 }

浙公网安备 33010602011771号