当前位置: 首页 > 编程日记 > 正文

ASP.NET MVC+Bootstrap个人博客之打造清新分页Helper(三)

0. 没有找到一款中意的分页插件,又不想使用现成的(丑到爆),所以自己动手造一个吧

先看下效果(其实也不咋滴...):

有点另类,分页直接是在后台拼接好html,然后发送到前台的:

1. 分页容器:

<div class="pagination"><ul>//************分页HTML*********</ul>
</div>

2.  PagerHelper:

namespace ZYN.BLOG.WebHelper
{public class PagerHelper{/// <summary>/// 生成分页Html数据/// </summary>/// <param name="currentPage">当前页</param>/// <param name="pageSize">页容量</param>/// <param name="totalCount">数据总条数</param>/// <returns>pagerHtmlString</returns>public static string GeneratePagerString(int currentPage, int pageSize, int totalCount){var redirectToUrl = HttpContext.Current.Request.Url.AbsolutePath;pageSize = pageSize <= 0 ? 4 : pageSize;//1.0 总页数int totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1);//2.0 分页条的容量int pageBarSize = 6;//默认一个分页条显示6个页码。分页条容量 //3.0 分页条的个数 totalPages个页数按 pageBarSize = 6  可以 分为多少个分页条int pageBarNum = (totalPages + pageBarSize - 1) / pageBarSize; // totalPages=13时,也就是把13个页码分成3个分页条//判断当前页currentPage坐落在第几个分页条内int position = (currentPage - 1) / pageBarSize;  //根据分页条的序号,计算出该分页条的第一个页码start和最后一个页码endint start = position * pageBarSize + 1;//如果是最后一个分页条,则需判断它实际的页条容量;否则页条容量就是pageBarSizeint curBarCapacity = pageBarSize;if (position == pageBarNum - 1){curBarCapacity = totalPages - (pageBarNum - 1) * pageBarSize;}StringBuilder pagerHtmlString = new StringBuilder();StringBuilder endHtmlString = new StringBuilder();//处理首页pagerHtmlString.AppendFormat("<li id='start-page'><a href='{0}?pageIndex={1}&pageSize={2}'>首页</a></li> ", redirectToUrl, 1, pageSize);//处理上一页:如果当前页不是第一页,就加上上一页if (currentPage > 1){pagerHtmlString.AppendFormat("<li class='prev-page'><a href='{0}?pageIndex={1}&pageSize={2}'>上一页</a></li> ", redirectToUrl, currentPage - 1, pageSize);}//假如起始位置start为1  7  13for (int i = 0; i < curBarCapacity; i++)  //curBarCapacity=3  i=0 1 2
            {int j = start + i; //要显示的页码当量值if (j == currentPage){//对当前页的处理:class=activepagerHtmlString.AppendFormat("<li class='active show-page'><span>{0}</span></li> ", currentPage);if (curBarCapacity == pageBarSize){//不处理最后一个分页条页if (currentPage == start + pageBarSize - 1){if (currentPage + 1 < totalPages){endHtmlString.AppendFormat("<li class='show-page'><a href='{0}?pageIndex={1}&pageSize={2}'>{3}</a></li>", redirectToUrl, currentPage + 1, pageSize, currentPage + 1);}endHtmlString.Append("<li class='show-page'><span>...</span></li>");endHtmlString.AppendFormat("<li class='show-page'><a href='{0}?pageIndex={1}&pageSize={2}'>{3}</a></li>", redirectToUrl, totalPages, pageSize, totalPages);}}}else{pagerHtmlString.AppendFormat("<li class='show-page'><a href='{0}?pageIndex={1}&pageSize={2}'>{3}</a></li> ", redirectToUrl, j, pageSize, j);}}//省略号的处理
            pagerHtmlString.Append(endHtmlString.ToString());//处理下一页:如果当前页不是最后一页,则加上下一页。也即中间的所有分页条都显示下一页if (currentPage != totalPages){pagerHtmlString.AppendFormat("<li class='next-page'><a href='{0}?pageIndex={1}&pageSize={2}'>下一页</a></li> ", redirectToUrl, currentPage + 1, pageSize);}//处理末页pagerHtmlString.AppendFormat("<li id='end-page'><a href='{0}?pageIndex={1}&pageSize={2}'>末页</a></li> ", redirectToUrl, totalPages, pageSize);pagerHtmlString.AppendFormat("<li id='total-page'><span>共-{0}-页</span></li>", totalPages);pagerHtmlString.Append(" ");return pagerHtmlString.ToString();}}
}

3 渲染出来的分页HTML是这样的:

<div class="pagination"><ul>
    <
li id="start-page"><a href="/Home/WrapArtList/0?pageIndex=1&amp;pageSize=6">首页</a></li>
    <li class="active show-page"><span>1</span></li>
    <li class="show-page"><a href="/Home/WrapArtList/0?pageIndex=2&amp;pageSize=6">2</a></li>
    <li class="show-page"><a href="/Home/WrapArtList/0?pageIndex=3&amp;pageSize=6">3</a></li>
    <li class="show-page"><a href="/Home/WrapArtList/0?pageIndex=4&amp;pageSize=6">4</a></li>
    <
li class="show-page"><a href="/Home/WrapArtList/0?pageIndex=5&amp;pageSize=6">5</a></li>
    <li class="next-page"><a href="/Home/WrapArtList/0?pageIndex=2&amp;pageSize=6">下一页</a></li>
    <li id="end-page"><a href="/Home/WrapArtList/0?pageIndex=5&amp;pageSize=6">末页</a></li>
    <li id="total-page"><span>共-5-页</span></li>
</ul> </div>

4. CSS样式:

/* 分页样式pagination ====== */
.pagination { /* div pagination*/margin: 0;padding: 20px;text-align: center;font-size: 12px;display: block;
}.pagination ul {display: inline-block;*display: inline;*zoom: 1;margin-left: 0;margin-bottom: 0;padding: 0;}.pagination ul > li {display: inline;}.pagination ul > li > a,.pagination ul > li > span {margin: 0 2px;float: left;padding: 5px 12px;background-color: #ddd;color: #666;border-radius: 2px;opacity: .88;}.pagination ul > li > a:hover,.pagination ul > li > a:focus {background-color: #bce8f1;}.pagination ul > .active > a,.pagination ul > .active > span {background-color: #45B6F7;color: #fff;}.pagination ul > .active > a,.pagination ul > .active > span {cursor: default;}.pagination ul > li > span,.pagination ul > .disabled > span,.pagination ul > .disabled > a,.pagination ul > .disabled > a:hover,.pagination ul > .disabled > a:focus {color: #999999;background-color: transparent;cursor: default;}
/* 自定义的分页pagination 结束====== */

5. 不嫌弃的话,拿去用吧...

如果有你发现了bug或有疑问、有建议的话,可以去我的小站找我: 去看看? ;

或者在这篇随笔下通知我一下,谢谢...

转载于:https://www.cnblogs.com/haust/p/5617663.html

相关文章:

支撑Java框架的基础技术:泛型,反射,动态代理,cglib

以Spring为例要想看明白他的源码需要彻底理解Java的一些基础技术泛型&#xff0c;反射同时对于一些高级技术例如动态代理&#xff0c;cglib和字节码技术也需要掌握&#xff0c;下面就按章节来一一说清楚这些技术的核心部分&#xff0c;最后手写一个简单的Spring框架。 一.静态代…

【CTF】实验吧 困在栅栏里的凯撒

题目先提到栅栏&#xff0c;再提到凯撒&#xff0c;按照顺序先栅栏解码&#xff0c;再凯撒解码。 一般密码的开头不是flag就是key或者ctf 所以选择“6栏”&#xff0c;在进行凯撒解码 在所有组合中&#xff0c;发现CTF即为flag

经典算法书籍推荐以及算法书排行【算法四库全书】

经典算法书籍推荐以及算法书排行【算法四库全书】 作者&#xff1a;霞落满天 https://linuxstyle.blog.csdn.net/ https://blog.csdn.net/21aspnet 行文方式&#xff1a;类似《四库全书》截取经典算法书目录和精华篇章 版权说明&#xff1a;本文于2019年5月5日首发于CS…

【CTF】实验吧 Fair-Play

它的标题就是题解的提示&#xff1a;Play-Fair Playfair解密算法首先将密钥填写在一个5*5的矩阵中&#xff08;去Q留Z&#xff09;&#xff0c;矩阵中其它未用到的字母按顺序填在矩阵剩余位置中&#xff0c;根据替换矩阵由密文得到明文。 对密文解密规则如下&#xff1a; 1 若c…

【DAY23】JVM与反射的学习笔记

JVM:-----------------1.JVM: java virtual machine.2.class file *.class3.ClassLoader4.runtime data area运行时数据区。1.Method area : 方法区.(shared)供所有线程共享.2.heap(shared):供所有线程共享.3.java stack(栈区)独占的。4.native method stack(本地方法栈)独占5.…

BZOJ2281:[SDOI2011]黑白棋(博弈论,组合数学,DP)

Description 小A和小B又想到了一个新的游戏。这个游戏是在一个1*n的棋盘上进行的&#xff0c;棋盘上有k个棋子&#xff0c;一半是黑色&#xff0c;一半是白色。最左边是白色棋子&#xff0c;最右边是黑色棋子&#xff0c;相邻的棋子颜色不同。小A可以移动白色棋子&#xff0c;小…

高性能微服务架构设计模式@霞落满天

高性能微服务架构设计模式 主讲&#xff1a;霞落满天 现在企业开发都是微服务架构&#xff0c;但是有很多问题&#xff0c;比如分布式定义&#xff0c;分布式的微服务怎么拆分&#xff0c;什么时候拆分&#xff0c;怎么做到高性能&#xff0c;中台怎么设计&#xff0c;读写分…

【数据结构】顺序栈的实现(C语言)

栈的基本概念及其描述 栈是一种特殊的线性表&#xff0c;规定它的插入运算和删除运算均在线性表的同一端进行&#xff0c;进行插入操作和删除操作的那一端称为栈顶&#xff0c;另一端称为栈底。 栈的插入操作和删除操作分别称为进栈和出栈。 FILO&#xff08;First In Last …

iOS绘制图片与文字

2019独角兽企业重金招聘Python工程师标准>>> #####绘制图片与文字 #####1.绘制图片&#xff0c;直接代码说明 加载图片 #pragma mark - 小黄人 -(void) drawImage:(CGRect) rect{UIImage *image[UIImage imageNamed:"黄人"];//图片有可能显示不全&#xf…

php-fpm慢执行日志

vim /usr/local/php-fpm/etc/php-fpm.d/www.conf//加入如下内容request_slowlog_timeout 1slowlog /usr/local/php-fpm/var/log/www-slow.log 测试&#xff1a;/usr/local/php-fpm/sbin/php-fpm -t/etc/init.d/php-fpm reloadls ../../var/log/ //生成日志php-fpm.log www-sl…

spring springboot springcloud常用注解

SpringBootApplication 组合注解&#xff0c;用在启动类上&#xff0c;源码&#xff1a; Retention(RetentionPolicy.RUNTIME) SpringBootConfiguration EnableAutoConfiguration ComponentScan public interface SpringBootApplication SpringBootConfiguration Configurat…

解决eclipse ctrl+鼠标左键不能用

选择【Window】菜单 Preferences ——>General——>Editors——>Text Editors——>Hyperlinking 把勾都点上,然后确定KEY 值为 crtl

【数据结构】顺序队列的实现(C语言)

队列的基本概念及其描述 队列是一种特殊的线性表&#xff0c;它的特殊性在于队列的插入和删除操作分别在表的两端进行。 插入的那一端称为队尾&#xff0c;删除的那一端称为队首。队列的插入操作和删除操作分别称为进队和出队。 先进先出&#xff08;First In First Out&…

ethereumjs/ethereumjs-vm-2-API文档

https://github.com/ethereumjs/ethereumjs-vm/blob/master/docs/index.md vm.runBlockchain Processes blocks and adds them to the blockchain 处理区块并将其添加到区块链中 Parameters输入参数 blockchain Blockchain A blockchain that to process 一个处理的区块链cb Fu…

qt 拖拽 修改大小(二)

最近项目需要实现windows下橡皮筋的效果&#xff0c;所以对此做了一些了解&#xff0c;特此记录。 首先windows系统是支持橡皮筋效果的&#xff0c;需要使用win32方 法&#xff1a;SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, showFullWindow, NULL, 0);showFullWindow是一个…

互联网大厂技术面试内幕@霞落满天

很多求职者往往并非因为技术不好&#xff0c;而是没有掌握面试的技巧导致不能把握机会&#xff0c;本课程的目的就是本课程先通过比较真实的好简历和不好的简历让大家明白自己的简历有哪些问题&#xff0c;事实上简历是大厂的敲门砖&#xff0c;非常重要&#xff0c;很多人得不…

【数据结构】顺序表的应用(1)(C语言)

问题&#xff1a; 1.将顺序表(a1,a2,…,an)重新排列以a1为界的两部分&#xff1a;a1前面的值均比a1小&#xff0c;a1后面的值均比a1大&#xff08;这里假设数据元素的类型具有可比性&#xff0c;不妨设为整型&#xff09;。 头文件与该头文件一样&#xff1a;【数据结构】顺序…

比特币寒冬中,你更应该关注企业区块链!

公众对区块链的认识也许限于比特币或以太坊&#xff0c;但很多却不知道 Hyperledger&#xff08;超级账本&#xff09;。Hyperledger Fabric&#xff0c;是由 IBM 带头发起的一个联盟链项目&#xff0c;2015 年末移交给 Linux 基金会&#xff0c;成为开源项目。Linux 基金会孵化…

JVM XMX设置多大比较好,Docke容器里该怎么设置JVM呢@无界编程

XMX是JVM的最大堆内存大小,XMS是JVM的初始堆内存大小。 不管是工作还是面试经常遇到一个问题就是XMX到底设置多大比较好? 网上的答案大多是说XMX和XMS设置为一样大,但是没有说到底XMX设置多大比较好。 如果设置为和操作系统一样大内存会怎么样? 这篇文章就带你搞清楚这…

【数据结构】顺序表的应用(2)(C语言)

问题&#xff1a; 2.有顺序表A和B&#xff0c;其元素均按从小到大的升序排列&#xff0c;编写一个算法&#xff0c;将它们合并成一个顺序表C&#xff0c;要求C的元素也按从小到大的升序排列。 头文件与该头文件一样&#xff1a;【数据结构】顺序表的实现&#xff08;C语言&am…

OWA登录页面显示为英文而不是中文

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包&#xff0c;QQ:185426445.电话18666943750故障描述&#xff1a;WIN10操作系统使用IE登录OWA的时候&#xff0c;界面语言为英文&#xff0c;WIN10操作系统为中文系统&#xff0c;区域语言都是设置为中文&…

java B2B2C springmvc mybatis多租户电子商城系统-Spring Cloud Feign

1、什么是Feign&#xff1f; 愿意了解源码的朋友直接企鹅求求&#xff1a;二一四七七七五六三三 Feign 的英文表意为“假装&#xff0c;伪装&#xff0c;变形”&#xff0c; 是一个http请求调用的轻量级框架&#xff0c;可以以Java接口注解的方式调用Http请求&#xff0c;而不用…

【数据结构】顺序表的应用(3)(C语言)

问题&#xff1a; 已知一个顺序表中的各节点值是从大到小有序的&#xff0c;设计一个算法&#xff0c;插入一个值为x的节点&#xff0c;使顺序表中的节点仍然是从小到大有序的。 头文件与该头文件一样&#xff1a;【数据结构】顺序表的实现&#xff08;C语言&#xff09; #i…

从源码和内核角度分析redis和nginx以及java NIO可以支持多大的并发

有人询问我网上一篇关于“redis为什么单线程这么快”的文章,我建议他不要看了,因为redis是单进程不是单线程,后面的意见不用看了,文章质量肯定不会很好,他也说了自己看了很久源码似乎还是有些云里雾里,所以我就给他分析了为什么redis这么快,这篇主要讲epoll的实现。 从…

背景图片等比缩放的写法background-size简写法

1、背景图片或图标也可像img一样给其宽高就能指定其缩放大小了。 比如一个实际宽高36*28的图标&#xff0c;要缩小一半引用进来的写法就是&#xff1a; background:rgba(0, 0, 0, 0) url("../images/report_icon2x.png") no-repeat scroll left center / 18px 14px; …

深入了解以太坊

正在看这篇文章的你&#xff0c;应该是一名被区块链技术所吸引的开发者或者极客。我相信你已经理解了区块链的技术原理&#xff0c;并急切地想要搞清楚这项技术将为你和你的开发技术栈带来怎样的影响。 如果你需要更基础的区块链技术介绍&#xff0c;可以阅读比特币和以太坊的白…

Netty和JDK源码来看Netty的NIO和JDK的NIO有什么不同

JDK底层提供了NIO实现,在Linux环境会调用内核epoll。 但是Netty通过JNI的方式提供了Native Socket Transport,为什么Netty要自己搞一套NIO呢? 这篇文章带你从jdk的源码和Netty的源码角度来分析为什么Netty要这么做。 JDK源码:openjdk-8u40 Netty源码:netty-4.1 1.先看J…

【数据结构】单链表的实现(C语言)

单链表是线性表链式储存的一种形式&#xff0c;其中的结点一般含有两个域&#xff0c;一个是存放数据信息的info域&#xff0c;另一个是指向该结点后继结点存放地址的指针next域。一个单链表必须要有一个首指针指向链表中的第一个结点。 单链表要掌握以下几种操作&#xff1a;…

《理解 OpenStack + Ceph》---来自-[爱.知识]-推荐

企业IT技术分享&#xff08;2016-06-29&#xff09;来自&#xff08;QQ群&#xff1a;企业私有云平台实战 454544014-推荐&#xff09;&#xff01;理解 OpenStack Ceph &#xff08;1&#xff09;&#xff1a;Ceph OpenStack 集群部署和配置http://www.cnblogs.com/sammyliu…

windows10 安装 mysql8.0.12 详解

【1】下载安装包 官网下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 如下图所示&#xff1a; 下载完成&#xff0c;安装包为mysql-8.0.12-winx64.zip 【2】安装准备 &#xff08;1&#xff09;安装路径。拷贝安装包到任意路径&#xff0c;然后解压缩。…