以前一直用的别人的分页控件今天自己写了个方便自己(更新)使用正则表达式处理URL参数

来源:互联网 发布:下载51自学网软件 编辑:程序博客网 时间:2024/09/21 09:26
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;namespace OurQu.Helper.WebHelper{    using System.Text.RegularExpressions;    using OurQu.Helper.Tools;    public class PageHelper    {        /// <summary>        /// 每页显示几条记录        /// </summary>        public int PageSize { get; set; }        /// <summary>        /// 当前页码        /// </summary>        public int CurrentPage { get; set; }        /// <summary>        /// 总记录数        /// </summary>        public int Total { get; set; }        /// <summary>        /// 总页码        /// </summary>        public int PageTotal { get; set; }        /// <summary>        /// 当前URL地址        /// </summary>        public string Url { get; set; }        /// <summary>        /// url参数        /// </summary>        public string Partem { get; set; }        public IEnumerable<object> Data { get; set; }        public PageHelper() { }        public PageHelper(int Count, int SelectPage, int? pageSize)        {            //判断当前的页码            Url = HttpContext.Current.Request.Url.ToString();            if (SelectPage != 1)                CurrentPage = SelectPage;            else                CurrentPage = 1;            //一共有多少条记录            Total = Count;            //每页显示的记录            PageSize = pageSize ?? 10;            var FontArea = Url.IndexOf("?");            Partem = FontArea != -1 ? Url.Substring(FontArea) : "";            //计算总页数            PageTotal = (PageSize + Total - 1) / PageSize;        }        /// <summary>        /// 判断页码        /// </summary>        /// <param name="page"></param>        /// <returns></returns>        public string SelectedNum(int page)        {            if (CurrentPage != page)                return "<a href='" + Url + page + "'>" + page.ToString() + "</a>";            else                return "<a href='#' class='pageulNow' >" + page.ToString() + "</a>";        }        public string FormatPager()        {            StringBuilder str = new StringBuilder();            string temp = Regex.Replace(Url, @"((&)((?:page))|((?:page)))(=)(\d)", "");            //处理参数的时候用了正则表达式匹配page=Num || &page=Num            if (Partem.Length > 0)                temp += "&page=";            else                temp += "?page=";            //这边做了个小处理。。实在没想出来更简单的            Url = Regex.Replace(temp, "(\\?)(&)", "?");            str.Append("<div id='pageContainer' <div class ='pageul'> ");            if (CurrentPage > 1)            {                str.Append(string.Format("<a href='{0}1'>首页</a>", Url));                str.Append(string.Format("<a href='{0}{1}'>上一页</a>", Url, (CurrentPage - 1).ObjToInt()));            }            ///偏移的起始位置            int startPage = CurrentPage > 7 ? CurrentPage - 7 : 1;            ///偏移的结束位置            int stopPage = CurrentPage < PageTotal - 7 ? CurrentPage + 7 : PageTotal;            if (PageTotal > 1)            {                for (int item = startPage; item < stopPage + 1; item++)                    str.Append(SelectedNum(item));            }            if (CurrentPage < PageTotal)            {                //str.Append("<a href='" + Url + Convert.ToInt32(CurrentPage + 1) + "' >下一页</a>");                str.Append(string.Format("<a href='{0}'>下一页</a>", Url + (CurrentPage + 1).ObjToInt()));                str.Append(string.Format("<a href='{0}{1}'>尾页</a>", Url, PageTotal));            }            //str.Append("<a> " + CurrentPage + "/" + PageTotal + "</span>页</a>");            str.Append(string.Format("<a> {0}/{1}</span>页</a>", CurrentPage, PageTotal));            str.Append(string.Format("共 {0} 条记录", Total));            str.Append("</div></div>");            return str.ToString();        }    }}


原创粉丝点击