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

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();
        }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值