Asp.Net分页控件
/// <summary> /// 分页方法 /// </summary> /// <param name="pageIndex">当前页码</param> /// <param name="totalCount">总条数</param> /// <param name="pageSize">一页多少条</param> /// /// <param name="url">页面地址</param> /// <param name="pageLength">显示多少页码</param> /// <returns></returns> public static string Page(int pageIndex,int totalCount,int pageSize, string url,int pageLength=5) { if (totalCount<=0) { return ""; } //保证在编写下一页的代码定向时不会受到中间for循环的干扰使pageIndex的值发生改变 int redirectPageIndex = pageIndex; //pageSize不可为0 if (pageSize==0) { pageSize = totalCount; } //获得当前可分页的页数数量 int pageCount = totalCount / pageSize + (totalCount % pageSize == 0 ? 0 : 1); //创建用来拼接字符串的对象 StringBuilder sb = new StringBuilder(); //处理首页 if (pageIndex!=1) { //当前传递进来的页码不是第1页,则显示首页和上一页 sb.Append(string.Format("<a href={0}?pageIndex={1}&pageSize={2}>首页</a><a href={0}?pageIndex={3}&pageSize={2}>上一页</a>", url,1, pageSize,pageIndex-1)); } //保存显示的页码数量 int length; //处理中间的页码 if (pageLength >= pageCount || pageLength <= 0) { //如果需要分成的页码数量比可分成的大 length = pageCount; } else { length = pageLength; } //方便计算当前应该转折的pageIndex的值 int t = pageIndex /length; int p = pageIndex % length; //这里给pageIndex重定向 int l = pageCount - length + 1; //当前已经到了最后的转折点 if (pageIndex>=l) { pageIndex = l; } else { //还未到 if (p==0&&t==1) { //这里说明在第一个转折点 pageIndex = 1; } else { //不在第一个 if (p==0) { //这是在转折点的时候 pageIndex = (t - 1) * length + 1; } else { pageIndex = t * length + 1; } } } //如果当前页码为最后一页 if (pageIndex>=pageCount) { //则让pageIndex回复到之前 pageIndex = pageIndex - length+1; // + 1; } //处理页码 for (int i = 0; i < length; i++) { sb.Append(string.Format("<a href={0}?pageIndex={1}&pageSize={2}>{1}</a>",url, pageIndex, pageSize)); pageIndex++; //temp++; } //处理下一页与末页 if (redirectPageIndex < pageCount) { //当前传递进来的页码不是最后页,则显示末页和下一页 sb.Append(string.Format("<a href={0}?pageIndex={1}&pageSize={2}>下一页</a><a href={0}?pageIndex={3}&pageSize={2}>末页</a>",url, redirectPageIndex + 1, pageSize,pageCount)); } sb.Append(string.Format("<span class='info'>第{0}页/共{1}页</span>", redirectPageIndex, pageCount)); return sb.ToString(); }
自己写的,不足不怪
调用方法:
前台传递
pageIndex:前台当前要显示的页码/当前被点击的页码,例如1
pageSize:前台当前要显示的数据数量,例如10
totalCount:所有数据的总条数,例如后台获取到100条
url:参数将要被传递到哪个页面/后台程序内,例如"a.aspx",则会生成<a href="a.aspx?pageIndex=1&pageSize=10">1</a>,也可不传(例如用在ajax异步无刷新分页时,但要自己手动处理分页中a标签的href属性,从中提取出pageIndex=1&pageSize=10)
pageLength:当前页中想要显示的页码数量,默认为5,例如当前数据库中的数据每次在前台展示10条,可以生成一共12个页码,传入pageLength为5后,则每次只会在页面上显示5个页码.