在做网站没用 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 分页类 简单好用 支持 AJAX 自定义文字的更多相关文章

  1. asp.net 分页类

    PaginatedList.cs using System;using System.Collections.Generic;using System.Linq;using System.Web; n ...

  2. php分页类代码带分页样式效果(转)

    php分页类代码,有漂亮的分页样式风格 时间:2016-03-16 09:16:03来源:网络 导读:不错的php分页类代码,将类文件与分页样式嵌入,实现php查询结果的精美分页,对研究php分页原理 ...

  3. PHP+jQuery 列表分页类 ( 支持 url 分页 / ajax 分页 )

    /* ******* 环境:Apache2.2.8 ( 2.2.17 ) + PHP5.2.6 ( 5.3.3 ) + MySQL5.0.51b ( 5.5.8 ) + jQuery-1.8.3.mi ...

  4. PHP+jQuery 长文章分页类 ( 支持 url / ajax 分页方式 )

    /* ******* 环境:Apache2.2.8 ( 2.2.17 ) + PHP5.2.6 ( 5.3.3 ) + MySQL5.0.51b ( 5.5.8 ) + jQuery-1.8 **** ...

  5. Django 自定义分页类

    分页类代码: class Page(object): ''' 自定义分页类 可以实现Django ORM数据的的分页展示 输出HTML代码: 使用说明: from utils import mypag ...

  6. 【paging_Class 分页类】使用说明

    类名:paging_Class 说明:分页类 注意: 1) 支持百万级数据分页 2) 支持多种类型的SQL语法,比如 Left Join 等. 3) 自动保存查询中的错误情况,记录保存在:/Cache ...

  7. asp.net的快捷实用分页类

    KeleyiPager分页类,可以于对列表页进行分页浏览,代码是从HoverTreeCMS项目中COPY的,感觉很不错,使用简单方便,但是功能强大. 在线体验效果:http://cms.hovertr ...

  8. 自己写的一个ASP.NET服务器控件Repeater和GridView分页类

    不墨迹,直接上代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  9. 简单实用的原生PHP分页类

    一款简单实用的原生PHP分页类,分页按钮样式简洁美观,页码多的时候显示“...”,也是挺多网站用的效果 核心分页代码 include_once("config.php"); req ...

随机推荐

  1. IOS开发之不同版本适配问题2(#ifdef __IPHONE_7_0)

    继续说说ios不同版本之间的适配 先说一个东西:在xcode当中有一个东西叫targets,苹果的官方文档是这样说的: A target specifies a product to build an ...

  2. Chrome谷歌浏览器首页被改为Hao123导航怎么办|附各类解决方法【转】

    软件小子:昨天偶然间发现自己的chrome浏览器的首页被篡改成hao123导航了,要是自己设置的还无所谓,但是后面还有尾巴.顿时就火了,又是哪款软件这么流氓,太无良了,我非常确定我肯定是没有勾选什么设 ...

  3. 转:TinyXM--优秀的C++ XML解析器

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解 ...

  4. Material Design练习

    最近写了个小应用练习material design的控件使用,使用豆瓣V2 API访问豆瓣电影,程序很小,也就用了几个API而已,能够显示北美票房榜.电影排行榜,查看电影详情,以及进行电影搜索,可惜豆 ...

  5. iSAC测试报告

    iSAC测试报告 测试码流:24k bit/s 测试环境:三星i9250  CPU 1.2G*2   ram:1G  TI芯片  OMAP 4460 双核1.2GHz MOTO ME722  CPU ...

  6. distri.lua重写开源手游服务器框架Survive

    Survive之前采用的是C+lua的设计方式,其中网关服务器全部由C编写,其余服务全部是C框架运行lua回调函数的方式编写游戏逻辑. 鉴于一般的手游对服务器端的压力不会太大,便将Survive用di ...

  7. 使用SQL Server 2014 In-Memory 内存数据库时需要注意的地方

    转载: http://www.infoq.com/cn/articles/sql-server-2014-memory-database http://www.cnblogs.com/Amaranth ...

  8. Spring进阶教程之在ApplicationContext初始化完成后重定义Bean

    前言 很久没有写博客了,也是两个原因:一是自己觉得一直在班门弄斧,其实自己没什么技术可言:二是很多朋友的问题实际上可以自行解决,我经常觉得不该我来过问,或者是有时候我认为技术还得靠自己钻研,我一两句话 ...

  9. apk签名

    参考:http://stackoverflow.com/questions/13578134/how-to-automate-keystore-generation-using-the-java-ke ...

  10. Android实战技巧:深入解析AsyncTask

    AsyncTask的介绍及基本使用方法 关于AsyncTask的介绍和基本使用方法可以参考官方文档和Android实战技巧:多线程AsyncTask这里就不重复. AsyncTask引发的一个问题 上 ...