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列表分页算法的更多相关文章

  1. VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法]

    VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] - tingya的专栏 - 博客频道 - CSDN.NET VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] 分类 ...

  2. django之分页算法实现(Paginator)

    导入模块:from django.core.paginator import Paginator 一.Paginator的基本用法: from django.core.paginator import ...

  3. 基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用

    在上篇<基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理>介绍了Bootstrap开发框架的一些基础性概括,包括总体界面效果,以及布局.菜单等内容, ...

  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.3.mi ...

  5. 嗨分享-前端技术-帝国CMS手机站修改列表分页(sysShowListMorePage)

    http://bbs.phome.net/showthread-31-318753-0.html 如果你的网站使用的是帝国CMS.PC站和手机站各使用一个模板组,但共同使用一个数据库.那么你的PC站和 ...

  6. ASP的高效率的分页算法.net,php同样可以参考

    一般习惯使用的有两种分页算法,一是传统的ADO分页,二是SELECT TOP分页算法.对于小型数据表,比如一两万的数据量的表,我倾向使用ADO算法,对于大型的数据表,则必须采用后者的算法了. 先来说说 ...

  7. 织梦DeDeCms列表分页和内容页分页错位解决办法

    文章页分页代码在这里/include/arc.archives.class.php列表页分页/include/arc.listview.class.php 很多入门的站长会碰到这样的问题,织梦的通病, ...

  8. arcpagelistarclist列表分页

    arcpagelistarclist列表分页 (DedeCMS 5.6) 名称:arcpagelist 功能:通过制定arclist的pagesize及tagid属性,配合arcpagelist标签进 ...

  9. web qq 获取好友列表hash算法

    web qq 获取好友列表hash算法 在使用web qq的接口进行好友列表获取的时候,需要post一个参数:hash 在对其js文件进行分析之后,发现计算hash的函数位于: http://0.we ...

随机推荐

  1. linux shell 之尝试编写 企业级 启动脚本

    企业Shell面试题10:开发企业级MySQL启动脚本 说明: MySQL启动命令为: 1 /bin/sh mysqld_safe --pid-file=$mysqld_pid_file_path 2 ...

  2. windows下java环境变量的配置 javac不是内部或外部命令的问题

    安装配置JAVA JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html . 下载你电脑对应的JDK,下 ...

  3. python beautifulsoup爬虫学习

    BeautifulSoup(page_html, "lxml").select(),这里可以通过浏览器开发者模式选择copy selector,并且并不需要完整路径. github ...

  4. Spring MVC的核心控制器DispatcherServlet的作用

    关于Spring MVC的核心控制器DispatcherServlet的作用,以下说法错误的是(  )? 它负责接收HTTP请求 加载配置文件 实现业务操作 初始化上下应用对象ApplicationC ...

  5. MySQL--表操作(innodb表字段数据类型、约束条件)、sql_mode操作

    一.创建表的完整语法 #[]内的可有可无,即创建表时字段名和类型是必须填写的,宽度与约束条件是可选择填写的.create table 表名(字段名1 类型[(宽度) 约束条件],字段名2 类型[(宽度 ...

  6. 使用python调用淘宝的ip地址库查询接口结合zabbix判断dnspod域名解析是否正确

    #encoding:utf-8 import socket import requests import json ''' 使用python结合zabbix判断dnspod域名解析是否正确 服务器分国 ...

  7. LabVIEW--为设备添加配置文件.ini

    需求:我同一个程序下载到两台机器人上,有些参数是不一样的,比如说服务器的ID或者端口,以及存放文件的位置,如果我每次下载之前改程序的话就非常麻烦了(虽然在程序里面是作为全局变量来存的),不利于后期的更 ...

  8. python-迭代器、生成器、内置函数及面向过程编程

    一.迭代器 迭代器是迭代取值的工具,迭代是一个重复的过程,每一次重复都是基于上一次的结果而来的. 为什么要用迭代器呢? 1.可以不依赖索引取值 2.同一时刻在内存中只有一个值,不会过多的占用内存 如何 ...

  9. Cropper.js使用笔记

    官网:https://fengyuanchen.github.io/cropperjs/ github:https://github.com/fengyuanchen/cropperjs 由于文档不好 ...

  10. 树·二叉查找树ADT(二叉搜索树/排序树)

    1.定义 对于每个节点X,它的左子树中所有的项的值小于X的值,右子树所有项的值大于X的值. 如图:任意一个节点,都满足定义,其左子树的所有值小于它,右子树的所有值大于它. 2.平均深度 在大O模型中, ...