自己写一个分页PageHelper
每次写分页导航的时候都要在html页面写一堆标签和样式,太麻烦了,所以干脆自己动手封装一个自己喜欢的类直接生成。
一、PageHelper类:
/// <summary>
/// 分页导航
/// </summary>
/// <param name="pageNum">当前第几页</param>
/// <param name="pageNumSum">总页数</param>
/// <param name="url">显示的url</param>
/// <param name="p">分页参数名</param>
/// <param name="linCount">显示多少页</param>
/// <returns></returns>
public static string page(int pageNum, int pageNumSum, string url, string p, int linCount)
{
if (pageNum < ) pageNum = ;
if (pageNum > pageNumSum) pageNum = pageNumSum;
// a的样式
string aStyle = "text-decoration:none;border:1px solid #075DB3;box-sizing:border-box;margin:0 2px;padding:2px 5px;font-size:12px;";
StringBuilder sb = new StringBuilder();
sb.AppendLine(string.Format("<div style='text-align:center;margin-bottom:30px;'>第<span style='color:#00ff21'>{0}</span>/{1} 页", pageNum, pageNumSum));
sb.AppendLine(string.Format(" <a style='{0}' href='{1}?{2}={3}'>上一页</a>", aStyle, url, p, pageNum - < ? : pageNum - ));
//设开始页为1
int beginPage = ;
//中间页为 linCount/2
int midPage = linCount / ;
if (pageNum > midPage)
{
beginPage = pageNum - midPage;
}
for (int i = ; i < linCount; i++)
{
//当前页不加链接
if (pageNum == beginPage + i)
{
sb.AppendLine(string.Format("<span style='display: inline-block;width:10px;'></span>{0}<span style='display: inline-block;width:10px;'></span>", beginPage + i));
}
else
{
sb.AppendLine(string.Format("<a style='{0}' href='{1}?{2}={3}'>{3}</a>", aStyle, url, p, beginPage + i));
}
//如果后面的页数大于总页数,退出循环
if (beginPage + i >= pageNumSum)
{
break;
} }
sb.AppendLine(string.Format(" <a style='{0}' href='{1}?{2}={3}'>下一页</a>", aStyle, url, p, pageNum + >= pageNumSum ? pageNumSum : pageNum + ));
sb.Append("</div>");
return sb.ToString();
}
二、演示
这是在一个mvc项目中做的演示
action :
public ActionResult Index(string page)
{
//1.获得当前页数
int pageNum = ;//默认第一页
if(page!=null)
pageNum = Convert.ToInt32(page); //一些判断是否为int或者是否<0大于最大页数这里不做判断,主要演示分页效果
//2.总页数-- 查询数据库得到总条数再计算得到总页数
int pageNumSum = ;//假设计算得到结果为18页
string url = "/Demo/Index"; //当前url
//要显示多少页
int pageList = ;//假设看到5页
//mvc要 MvcHtmlString 进行生成html码,不然会是一个字符串
ViewBag.page = new MvcHtmlString(PageHelper.page(pageNum, pageNumSum, url, "page", pageList));
return View(); }
view:
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<style type="text/css">
p {
text-align:center;
color:#00ff21;
}
</style>
</head>
<body>
<p>列表内容</p>
<p>列表内容</p>
<p>列表内容</p>
<p>列表内容</p>
<p>列表内容</p>
<div>
@ViewBag.page
</div>
</body>
</html>
效果:

后言:当然这主要是说一个方法,如果觉得这个不好看,你可以自己写多几个自己喜欢的分页效果类,想用哪个就调用哪个的。
自己写一个分页PageHelper的更多相关文章
- 用vue.js的v-for,v-if,computed写一个分页样式
在学Vue,总想写个分页,先写了一个样式. 主要看思路: 思路简单,得到总页数,判断总页数,循环. 先判断总页数是否需要分页,总页数==1页就不分了. 再判断总页数<11就不用--. 总页数&g ...
- [转]Mybatis极其(最)简(好)单(用)的一个分页插件
原文地址:http://blog.csdn.net/isea533/article/details/23831273 分页插件示例:http://blog.csdn.net/isea533/artic ...
- 牛逼哄哄的PageHelper分页插件到底是怎么实现的?网友:给我10分钟,给你写一个~
Hi,各位读者们 PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件,其实我并不想加上好用两个字,但是为了表扬插件作者开源免费的崇高精神,我毫不犹豫的加上了好用一词作为赞美. ...
- 使用纯js写的一个分页
上图晒效果: 网上确实有很多分页的插件以及开源代码,单本是一个后台开发猿,前台css等样式还驾驭不住,所以就开始自己去写了.其实这个分页原理很简单,就是用ajax往后台传值(当前页码),后台使用lim ...
- 自己动手用Javascript写一个无刷新分页控件
.NET技术交流群:337901356 ,欢迎您的加入! 对 于一个用户体验好的网站来说,无刷新技术是很重要的,无刷新,顾名思义,就是局部刷新数据,有用过Asp.net Web Form技术开发网页的 ...
- yii下多条件多表组合查询以及自写ajax分页
多条件组合查询主要用到yii的CDbCriteria,这个类很多oem框架都有,非常好用. 前台表单 前台查询表单效果是这样的,多个条件组,每个组里放多个input,name为数组.当任何一个复选框被 ...
- 基于vue2.0的一个分页组件
分页组件在项目中经常要用到之前一直都是在网上找些jq的控件来用(逃..),最近几个项目用上vue了项目又刚好需要一个分页的功能.于是百度发现几篇文章介绍的实在方式有点复杂, 没耐心看自己动手造轮子写了 ...
- 手动的写一个structs
为了更好的学习框架的运行机制,这里开始学习框架之前,介绍一个简单的自定义的框架. 需求: 登录:id:aaa,pwd:888登录成功之后,跳转到,index.jsp页面并显示,欢迎你,aaa 注册,页 ...
- 用weexplus从0到1写一个app
说明 基于wexplus开发app是来新公司才接触的,之前只是用过weex体验过写demo,当时就被用vue技术栈来开发app的开发体验惊艳到了,这个开发体验比react native要好很多,对于我 ...
随机推荐
- Python对象相关内置函数
针对一个对象,通过以下几个函数,可以获取到该对象的一些信息. 1.type() ,返回某个值的类型 >>> type() <class 'int'> >>&g ...
- 小程序实践(五):for循环绑定item的点击事件
微信展示列表效果借助于 wx:for 简单写一个列表(wxml文件中): 对应的数据源(js文件中): 写一个点击监听: 效果: 以上.可以实现列表的item点击效果,但是无法到点击的item对应的 ...
- git 入门教程之实战 git
实战 git git 是一款分布式版本控制系统,可以简单概括: 不要把鸡蛋放在一个篮子里,你的一举一动都在监视中. 实战场景 你作为某项目的其中一员或者负责人,和小伙伴们一起开发,大家既有着各自分工互 ...
- Caused by:org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type "" available: expected at least 1 bean which qualifies as autowire candidate
项目使用spring, mybatis.因为分了多个模块,所以会这个模块引用了其它模块的现在,结果使用Junit测试的时候发现有两个模块不能自动注入dao和service问题.解决后在此记录一下. 解 ...
- JAVA项目从运维部署到项目开发(二.ZooKeeper)
一.zookeeper的相关介绍 点击查看 二.下载.安装与配置 1.ZooKeeper官网下载地址(点击跳转),当前稳定版本为V3.4.12.Liniux下可以在指定目录,使用wget命令下载. h ...
- 暂别SQL Server,转战MySQL和Redis
机缘巧合下找到一个愿意提供学习MySQL和Redis机会的岗位,于是要暂别SQL Server了. 后续一段时间会陆续总结三年来SQL Server相关的工作经验,当做是暂别前的总结.
- List删除
使用for循环,倒序删除: ; i >= ; i--) { var item = list[i]; ") { list.Remove(item); } }
- ASP.NET -- WebForm -- HttpResponse 类的方法和属性
ASP.NET -- WebForm -- HttpResponse 类的方法和属性 1. HttpResponse 类的方法 (1) AddCacheDependency: 将一组缓存依赖项与响应关 ...
- docker 私有仓库简易搭建
概要 本地私有仓库 局域网私有仓库 总结 概要 docker hub 使用非常方便,而且上面有大量的镜像可以使用. 但是,每次都远程下载镜像速度非常慢,如果能在本地做一个 docker 的仓库,多人协 ...
- March 03rd, 2018 Week 9th Saturday
No cross, no crown. 不经历风雨,怎能见彩虹. Sometimes you can see a beautiful rainbow high in the sky without h ...