音效素材网提供各类素材,打造精品素材网站!

站内导航 站长工具 投稿中心 手机访问

音效素材

简单好用的ASP.NET分页类(支持AJAX、自定义文字)
日期:2021-09-07 22:02:59   来源:脚本之家

在做网站没用 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;
 
    }
 
  }
 
}

    您感兴趣的教程

    在docker中安装mysql详解

    本篇文章主要介绍了在docker中安装mysql详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编...

    详解 安装 docker mysql

    win10中文输入法仅在桌面显示怎么办?

    win10中文输入法仅在桌面显示怎么办?

    win10系统使用搜狗,QQ输入法只有在显示桌面的时候才出来,在使用其他程序输入框里面却只能输入字母数字,win10中...

    win10 中文输入法

    一分钟掌握linux系统目录结构

    这篇文章主要介绍了linux系统目录结构,通过结构图和多张表格了解linux系统目录结构,感兴趣的小伙伴们可以参考一...

    结构 目录 系统 linux

    PHP程序员玩转Linux系列 Linux和Windows安装

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,Linux和Windows安装nginx教程,具有一定的参考价值,感兴趣...

    玩转 程序员 安装 系列 PHP

    win10怎么安装杜比音效Doby V4.1 win10安装杜

    第四代杜比®家庭影院®技术包含了一整套协同工作的技术,让PC 发出清晰的环绕声同时第四代杜比家庭影院技术...

    win10杜比音效

    纯CSS实现iOS风格打开关闭选择框功能

    这篇文章主要介绍了纯CSS实现iOS风格打开关闭选择框,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作...

    css ios c

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的

    Win7给电脑C盘扩容的办法大家知道吗?当系统分区C盘空间不足时,就需要给它扩容了,如果不管,C盘没有足够的空间...

    Win7 C盘 扩容

    百度推广竞品词的投放策略

    SEM是基于关键词搜索的营销活动。作为推广人员,我们所做的工作,就是打理成千上万的关键词,关注它们的质量度...

    百度推广 竞品词

    Visual Studio Code(vscode) git的使用教程

    这篇文章主要介绍了详解Visual Studio Code(vscode) git的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...

    教程 Studio Visual Code git

    七牛云储存创始人分享七牛的创立故事与

    这篇文章主要介绍了七牛云储存创始人分享七牛的创立故事与对Go语言的应用,七牛选用Go语言这门新兴的编程语言进行...

    七牛 Go语言

    Win10预览版Mobile 10547即将发布 9月19日上午

    微软副总裁Gabriel Aul的Twitter透露了 Win10 Mobile预览版10536即将发布,他表示该版本已进入内部慢速版阶段,发布时间目...

    Win10 预览版

    HTML标签meta总结,HTML5 head meta 属性整理

    移动前端开发中添加一些webkit专属的HTML5头部标签,帮助浏览器更好解析HTML代码,更好地将移动web前端页面表现出来...

    移动端html5模拟长按事件的实现方法

    这篇文章主要介绍了移动端html5模拟长按事件的实现方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家...

    移动端 html5 长按

    HTML常用meta大全(推荐)

    这篇文章主要介绍了HTML常用meta大全(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    cdr怎么把图片转换成位图? cdr图片转换为位图的教程

    cdr怎么把图片转换成位图? cdr图片转换为

    cdr怎么把图片转换成位图?cdr中插入的图片想要转换成位图,该怎么转换呢?下面我们就来看看cdr图片转换为位图的...

    cdr 图片 位图

    win10系统怎么录屏?win10系统自带录屏详细教程

    win10系统怎么录屏?win10系统自带录屏详细

    当我们是使用win10系统的时候,想要录制电脑上的画面,这时候有人会想到下个第三方软件,其实可以用电脑上的自带...

    win10 系统自带录屏 详细教程

    + 更多教程 +
    ASP编程JSP编程PHP编程.NET编程python编程