• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    简单好用的ASP.NET分页类(支持AJAX、自定义文字)

    在做网站没用 JS UI控件时 很实用

    用法:

    var ps=new PageString();
     
     /*可选参数*/
     
     ps.SetIsEnglish = true;// 是否是英文    (默认:false)
     ps.SetIsShowText = true;//是否显示分页文字 (默认:true)
     //ps.TextFormat=""             (默认值:《span class=\"pagetext\"》《strong》总共《/strong》:{0} 条 《strong》当前《/strong》:{1}/{2}《/span》)
     //ps.SetPageIndexName Request["pageIndex"](默认值:"pageIndex")
     ps.SetIsAjax = false;//          (默认值:"false")
     
     /*函数参数*/
     int total = 10000;
     int pageSize = 10;
     int pageIndex = Convert.ToInt32(Request["pageIndex"]);
     
     var page = ps.ToString(total, pageSize, pageIndex, "/UI/PageStringTest.aspx?");
     
     //获取 page html 输出
    Response.Write(page);
    
    

    效果:

    代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Text.RegularExpressions;
     
    namespace SyntacticSugar
    {
      /// summary>
      /// ** 描述:分页类
      /// ** 创始时间:2015-5-29
      /// ** 修改时间:-
      /// ** 作者:sunkaixuan
      public class PageString
      {
        /// summary>
        /// 是否是英文   (默认:false)
        /// /summary>
        public bool SetIsEnglish { get; set; }
        /// summary>
        /// 是否显示分页文字(默认:true)
        /// /summary>
        public bool SetIsShowText { get; set; }
        /// summary>
        /// 样式      (默认:"pagination")
        /// /summary>
        public string SetClassName { get; set; }
        /// summary>
        /// 分页参数名   (默认:"pageIndex")
        /// /summary>
        public string SetPageIndexName { get; set; }
        /// summary>
        /// 是否是异步 同步 href='' 异步 onclick=ajaxPage()  (默认:false)
        /// /summary>
        public bool SetIsAjax { get; set; }
     
        /// summary>
        /// 自定义文字
        /// string.Format("{0}{1}{2}","总记录数","当前页数","总页数")
        /// 默认值:《span class=\"pagetext\"》《strong》总共《/strong》:{0} 条 《strong》当前《/strong》:{1}/{2}《/span》
        /// /summary>
        public string SetTextFormat { get; set; }
     
        public PageString()
        {
          SetIsEnglish = false;
          SetIsShowText = true;
          SetTextFormat = "span class=\"pagetext\">strong>总共/strong>:{0} 条 strong>当前/strong>:{1}/{2}/span> ";
          SetClassName = "pagination";
          SetPageIndexName = "pageIndex";
          SetIsAjax = false;
        }
     
        /*免费的样式
        .pagination .click {cursor:pointer}
        .pagination a{text-decoration: none;border: 1px solid #AAE;color: #15B;font-size: 13px;border-radius: 2px;}
        .pagination span{ color:#666;font-size:13px;display: inline-block;border: 1px solid #ccc;padding: 0.2em 0.6em;}
        .pagination span.pagetext{ border:none}
        .pagination a:hover{background: #26B;color: #fff;}
        .pagination a{display: inline-block;padding: 0.2em 0.6em;}
        .pagination .page_current{background: #26B;color: #fff;border: 1px solid #AAE;margin-right: 5px;}
        .pagination{margin-top: 20px;}
        .pagination .current.prev, .pagination .current.next{color: #999;border-color: #999;background: #fff;}
         * */
     
        /// summary>
        /// 分页算法<一>共20页 首页 上一页 1 2 3 4 5 6 7 8 9 10 下一页 末页
        /// /summary>
        /// param name="total">总记录数/param>
        /// param name="pageSize">每页记录数/param>
        /// param name="pageIndex">当前页数/param>
        /// param name="query_string">Url参数/param>
        /// returns>/returns>
        public string ToString(int total, int pageSize, int pageIndex, string query_string)
        {
     
          int allpage = 0;
          int next = 0;
          int pre = 0;
          int startcount = 0;
          int endcount = 0;
          StringBuilder pagestr = new StringBuilder();
          pageIndex = pageIndex == 0 ? 1 : pageIndex;
          pagestr.AppendFormat("div class=\"{0}\" >", SetClassName);
          if (pageIndex  1) { pageIndex = 1; }
          //计算总页数
          if (pageSize != 0)
          {
            allpage = (total / pageSize);
            allpage = ((total % pageSize) != 0 ? allpage + 1 : allpage);
            allpage = (allpage == 0 ? 1 : allpage);
          }
          next = pageIndex + 1;
          pre = pageIndex - 1;
          startcount = (pageIndex + 5) > allpage ? allpage - 9 : pageIndex - 4;//中间页起始序号
          //中间页终止序号
          endcount = pageIndex  5 ? 10 : pageIndex + 5;
          if (startcount  1) { startcount = 1; } //为了避免输出的时候产生负数,设置如果小于1就从序号1开始
          if (allpage  endcount) { endcount = allpage; }//页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内
     
          bool isFirst = pageIndex == 1;
          bool isLast = pageIndex == allpage;
     
          if (SetIsShowText)
            pagestr.AppendFormat(SetTextFormat, total, pageIndex, allpage);
     
          if (isFirst)
          {
            pagestr.Append("span>首页/span> span>上一页/span>");
          }
          else
          {
            pagestr.AppendFormat("a href=\"{0}pageIndex=1\">首页/a> a href=\"{0}pageIndex={1}\">上一页/a>", query_string, pre);
          }
          //中间页处理,这个增加时间复杂度,减小空间复杂度
          for (int i = startcount; i = endcount; i++)
          {
            bool isCurent = pageIndex == i;
            if (isCurent)
            {
              pagestr.Append(" a class=\"page_current\">" + i + "/a>");
            }
            else
            {
              pagestr.Append("  a href=\"" + query_string + "pageIndex=" + i + "\">" + i + "/a>");
            }
     
          }
          if (isLast)
          {
            pagestr.Append("span>下一页/span> span>末页/span>");
          }
          else
          {
            pagestr.Append(" a href=\"" + query_string + "pageIndex=" + next + "\">下一页/a> a href=\"" + query_string + "pageIndex=" + allpage + "\">末页/a>");
          }
          pagestr.AppendFormat("/div>");
          return ConversionData(pagestr.ToString());
        }
     
        private string ConversionData(string page)
        {
          if (SetIsEnglish)
          {
            page= page.Replace("上一页", "Previous").Replace("下一页", "Next").Replace("总共", "total").Replace("当前", "Current").Replace("条", "records").Replace("首页", "First").Replace("末页", "Last");
          }
          if (SetIsAjax)
          {
            var matches = Regex.Matches(page, @"href\="".*?""",RegexOptions.Singleline);
            if (matches != null  matches.Count > 0)
            {
              foreach (Match m in matches)
              {
                page = page.Replace(m.Value, string.Format("class=\"click\" onclick=\"ajaxPage('{0}')\"", Regex.Match(m.Value, string.Format(@"{0}\=(\d+)", SetPageIndexName)).Groups[1].Value));
              }
            }
          }
          return page;
     
        }
     
      }
     
    }
    

    您可能感兴趣的文章:
    • 分享一个asp.net pager分页控件
    • Asp.Net数据控件引用AspNetPager.dll分页实现代码
    • 一个Asp.Net的显示分页方法 附加实体转换和存储过程 带源码下载
    • asp.net中使用自定义控件的方式实现一个分页控件的代码
    • asp.net jquery无刷新分页插件(jquery.pagination.js)
    • asp.net自定义分页控件示例
    • asp.net利用后台实现直接生成html分页的方法
    • ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedList.Mvc)
    • asp.net中如何调用sql存储过程实现分页
    • ASP.NET MVC4 HtmlHelper扩展类,实现分页功能
    上一篇:ASP.NET简单好用功能齐全图片上传工具类(水印、缩略图、裁剪等)
    下一篇:支持ASP.NET MVC、WebFroM的表单验证框架ValidationSuar使用介绍
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    简单好用的ASP.NET分页类(支持AJAX、自定义文字) 简单,好,用的,ASP.NET,分页,