123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Web;
- namespace CP.Common
- {
- /// <summary>
- /// 通用分页方法
- /// 支持UrlRewrite
- /// </summary>
- public class ShowPageList
- {
- /// <summary>
- /// 通用分页方法
- /// </summary>
- /// <param name="pagesize">每页条数</param>
- /// <param name="page">页码</param>
- /// <param name="recordcount">记录总数</param>
- /// <param name="rewriter">重写规则</param>
- /// <returns></returns>
- public static string PageList(int pagesize, int page, int recordcount, string rewriter = null, bool first = true)
- {
- System.Text.StringBuilder sb = new System.Text.StringBuilder();
- if (recordcount == 0)
- return "";
- int pagecount = 0;
- if (recordcount % pagesize == 0)
- pagecount = recordcount / pagesize;
- else
- pagecount = recordcount / pagesize + 1;
- if (first)
- sb.Append("<a href=\"" + GetLink(1, rewriter) + "\" class=\"next\">第一页</a>");
- if (page > 1)
- sb.Append("<a href=\"" + GetLink((page - 1), rewriter) + "\" class=\"next\">上一页</a>");
- else
- sb.Append("<a href=\"" + GetLink(1, rewriter) + "\" class=\"next\">上一页</a>");
- ///显示1,2,3,4,5的链接
- if (pagecount < 5)
- {
- for (int i = 1; i <= pagecount; i++)
- {
- if (i != page)
- sb.Append("<a href=\"" + GetLink(i, rewriter) + "\">" + i + "</a>");
- else
- sb.Append("<a class=\"tab\">" + i + "</a>");
- }
- }
- else
- {
- if (page < 5)
- {
- for (int i = 1; i <= 5; i++)
- {
- if (i != page)
- sb.Append("<a href=\"" + GetLink(i, rewriter) + "\">" + i + "</a>");
- else
- sb.Append("<a class=\"tab\">" + i + "</a>");
- }
- }
- else
- {
- if (page + 3 <= pagecount)
- {
- for (int i = page - 2; i < page + 2; i++)
- {
- if (i != page)
- sb.Append("<a href=\"" + GetLink(i, rewriter) + "\">" + i + "</a>");
- else
- sb.Append("<a class=\"tab\">" + i + "</a>");
- }
- }
- else
- {
- for (int i = pagecount - 2; i <= pagecount; i++)
- {
- if (i != page)
- sb.Append("<a href=\"" + GetLink(i, rewriter) + "\">" + i + "</a>");
- else
- sb.Append("<a class=\"tab\">" + i + "</a>");
- }
- }
- }
- }
- if (page < pagecount)
- sb.Append("<a href=\"" + GetLink((page + 1), rewriter) + "\" class=\"next\">下一页</a>");
- else
- sb.Append("<a href=\"" + GetLink(pagecount, rewriter) + "\" class=\"next\">下一页</a>");
- if (first)
- {
- if (pagecount == 0)
- sb.Append("<a href=\"" + GetLink(1, rewriter) + "\">末尾页</a>");
- else
- sb.Append("<a href=\"" + GetLink(pagecount, rewriter) + " \" class=\"next\">末尾页</a>");
- }
- sb.Append("<a class=\"next\">"+page+"/" + pagecount + "</a>");
- return sb.ToString();
- }
- private static string GetLink(int page, string rewriter)
- {
- //目前只支持如:rewriter="topic-xxxx-{0}.html"的重写
- string link = string.Empty;
- string url = string.Empty;
- if (!string.IsNullOrEmpty(rewriter)) //url重写时
- {
- if (page == 1)
- url = rewriter.Replace("-{0}", "");
- else
- url = string.Format(rewriter, page);
- link = url;
- }
- else
- {
- url = HttpContext.Current.Request.RawUrl;
- if (url.IndexOf('?') != -1)
- {
- if (page == 1)
- {
- link = Regex.Replace(url, @"[\&,\?]p=\d+", "");
- }
- else
- {
- if (url.IndexOf("p=") != -1)
- link = Regex.Replace(url, @"p=\d+", "p=" + page);
- else
- link = url + "&p=" + page;
- }
- }
- else
- {
- link = url + "?p=" + page;
- }
- }
- return link;
- }
- }
- }
|