Html列表分页算法
public class PageHelper
{
/// <summary>
/// 标签
/// </summary>
public string Tag { get; set; }
/// <summary>
/// 选中的标签样式
/// </summary>
public string TagCurr { get; set; }
/// <summary>
/// 分页的路径
/// </summary>
public string Url { get; set; }
/// <summary>
/// 当前页
/// </summary>
public int PageIdnex { get; set; }
/// <summary>
/// 总页数
/// </summary>
public int PageCount { get; set; } /// <summary>
/// 实现分页算法
/// </summary>
/// <returns></returns>
public string CreatePage( )
{ //1.1当前页大于总页数
if (PageIdnex > PageCount) return null;
StringBuilder sb = new StringBuilder();
//1.2当总页数小于5条时,显示全部的页码
if (PageCount <= )
{
//拼接页码
for (int i = ; i <= PageCount; i++)
{
if (PageIdnex == i)
{
//拼接当前页
sb.Append($"<a onclick=pager(\"{Url}\",{i}) class=\"{TagCurr}\">{i}</a>");
}
else
{
sb.Append($"<a onclick=pager(\"{Url}\",{i})>{i}</a>");
}
}
return sb.ToString();
}
else
{
//2.2 总页数大于5,当前页小于4时
if (PageIdnex <= )
{
//2.2.1 当前页靠近尾页
if (PageCount - PageIdnex <= )
{
//拼接第一页
sb.Append($"<a onclick=pager(\"{Url}\",{1})>1</a><a>...</a>");
for (int i = PageIdnex - ; i <= PageCount; i++)
{
if (PageIdnex == i)
{
//拼接当前页
sb.Append($"<a onclick=pager(\"{Url}\",{i}) class=\"{TagCurr}\">{i}</a>");
}
else
{
sb.Append($"<a onclick=pager(\"{Url}\",{i})>{i}</a>");
}
}
}
else
{
//2.2.2当前页靠近首页
for (int i = ; i <= PageIdnex + ; i++)
{
if (PageIdnex == i)
{
sb.Append($"<a onclick=pager(\"{Url}\",{i}) class=\"{TagCurr}\">{i}</a>");
}
else
{
sb.Append($"<a onclick=pager(\"{Url}\",{i})>{i}</a>");
}
}
//拼接最后一页
sb.Append($"<a>...</a><a onclick=pager(\"{Url}\",{PageCount})>{PageCount}</>");
} }
else
{
//2.3 总页数大于5,当前页大于4时
sb.Append($"<a onclick=pager(\"{Url}\",{1})>1</a><a>...</a>");
//2.3.1 当前页大于4,当前页离尾页很近
if (PageCount - PageIdnex <= )
{
for (int i = PageIdnex - ; i <= PageCount; i++)
{
if (PageIdnex == i)
{
sb.Append($"<a onclick=pager(\"{Url}\",{i}) class=\"{TagCurr}\">{i}</a>");
}
else
{
sb.Append($"<a onclick=pager(\"{Url}\",{i})>{i}</a>");
}
}
}
else
{
//2.3.2当前页在中间
for (int i = PageIdnex - ; i < PageIdnex + ; i++)
{
if (PageIdnex == i)
{
sb.Append($"<a onclick=pager(\"{Url}\",{i}) class=\"{TagCurr}\">{i}</a>");
}
else
{
sb.Append($"<a onclick=pager(\"{Url}\",{i})>{i}</a>");
}
}
sb.Append($"<a>...</a><a onclick=pager(\"{Url}\",{PageCount})>{PageCount}</>");
}
} return sb.ToString();
}
控制器 var list = new List<string>();
for (int i = ; i <= ; i++)
{
list.Add("北京朝阳区" + i);
}
int pageSzie = ;
int pageCount = ;
if (list.Count % pageSzie == )
{
pageCount = list.Count / pageSzie;
}
else
{
pageCount = (list.Count / pageSzie) + ;
}
PageHelper ph = new PageHelper
{
Tag = "a",
TagCurr = "curr",
Url = "/testpage/list/",
PageIndex=pageIndex,
PageCount=pagecount
};
var strHtml = ph.CreatePage();
var pageList = list.Skip((pageIndex - ) * pageSzie).Take(pageSzie).ToList();
ViewBag.StrHtml = strHtml;
ViewBag.PageList = pageList;
JS
function fenye_ok() {
pager("/TestPage/list", );
}
function pager(href, pageIndex) {
var num = $("#num").val();
$("#div-load").load("/TestPage/list", { "pageIndex": pageIndex, "num": num }, function () { });
}
Html列表分页算法的更多相关文章
- VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法]
VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] - tingya的专栏 - 博客频道 - CSDN.NET VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] 分类 ...
- django之分页算法实现(Paginator)
导入模块:from django.core.paginator import Paginator 一.Paginator的基本用法: from django.core.paginator import ...
- 基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用
在上篇<基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理>介绍了Bootstrap开发框架的一些基础性概括,包括总体界面效果,以及布局.菜单等内容, ...
- 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 ...
- 嗨分享-前端技术-帝国CMS手机站修改列表分页(sysShowListMorePage)
http://bbs.phome.net/showthread-31-318753-0.html 如果你的网站使用的是帝国CMS.PC站和手机站各使用一个模板组,但共同使用一个数据库.那么你的PC站和 ...
- ASP的高效率的分页算法.net,php同样可以参考
一般习惯使用的有两种分页算法,一是传统的ADO分页,二是SELECT TOP分页算法.对于小型数据表,比如一两万的数据量的表,我倾向使用ADO算法,对于大型的数据表,则必须采用后者的算法了. 先来说说 ...
- 织梦DeDeCms列表分页和内容页分页错位解决办法
文章页分页代码在这里/include/arc.archives.class.php列表页分页/include/arc.listview.class.php 很多入门的站长会碰到这样的问题,织梦的通病, ...
- arcpagelistarclist列表分页
arcpagelistarclist列表分页 (DedeCMS 5.6) 名称:arcpagelist 功能:通过制定arclist的pagesize及tagid属性,配合arcpagelist标签进 ...
- web qq 获取好友列表hash算法
web qq 获取好友列表hash算法 在使用web qq的接口进行好友列表获取的时候,需要post一个参数:hash 在对其js文件进行分析之后,发现计算hash的函数位于: http://0.we ...
随机推荐
- 1.Python_字符串_常用办法总结
明确:对字符串的操作方法都不会改变原来字符串的值. 1.去掉空格和特殊符号 name.strip() 去掉空格和换行符 name.strip("xx") 去掉某个字符串 name. ...
- 拿什么守护你的Node.JS进程: Node出错崩溃了怎么办?
被吐嘈的NodeJS的异常处理 许多人都有这样一种映像,NodeJS比较快: 但是因为其是单线程,所以它不稳定,有点不安全,不适合处理复杂业务: 它比较适合对并发要求比较高,而且简单的业务场景. 在E ...
- python3+selenium框架设计05-配置文件和浏览器引擎类
python3配置文件的增删改查等操作可以使用内置的ConfigParser模块,可以自行百度学习,也可以看Python3学习笔记27-ConfigParser模块 配置文件一般存放着环境信息,比如u ...
- Java序列化Serializable
1.什么是序列化和反序列化 Serialization(序列化)是一种将对象以一连串的字节描述的过程:deserialization(反序列化)是一种将这些字节重建成一个对象的过程. 2.什么情况下需 ...
- Ubuntu 18.04使用sudo pip3报错
在使用sudo pip3 install python库的时候出现如下警告: The directory '/home/lzhu/.cache/pip/http' or its parent dire ...
- python操作三大主流数据库(11)redis的安装和简单使用
命令参考文档:http://www.redis.cn/topics/introduction.html 1.安装及配置官网https://redis.io中文网站:http://www.redis.c ...
- Maven多模块项目加载
Maven多模块项目中如何让Spring运行时成功加载指定的子模块 将子模块pom加入到父模块pom的定义中,并继承父模块 在web.xml中配置加载子模块的Spring配置文件 在启 ...
- Jquyer轮播带数字和提示文字
效果图如下: 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
- 40)django-常用过滤器
一.形式:小写 {{ name | lower }} 二.过滤器是可以嵌套的,字符串经过三个过滤器,第一个过滤器转换为小写,第二个过滤器输出首字母,第三个过滤器将首字母转换成大写 标签 {{ str| ...
- python-并发编程之多进程
一.操作系统基础: 进程的概念起源于操作系统,操作系统其它所有概念都是围绕进程来的,所以我们了解进程之前先来了解一下操作系统 操作系统位于计算机硬件与应用软件之间,本质也是一个软件.操作系统由操作系统 ...