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 ...
随机推荐
- Java异常处理之try-with-resources
Oracle官方文档: http://docs.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html 概 ...
- Spring Boot中的initializers的作用分析
在SpringApplication的实例属性中有一个初始器的属性:List<ApplicationContextInitializer<?>> initializers ,这 ...
- camera理论基础和工作原理【转】
转自:http://www.cnblogs.com/fjutacm/p/220631977df995512d136e4dbd411951.html 写在前面的话,本文是因为工作中需要编写摄像头程序,因 ...
- ppp 完全理解(二)【转】
转自:https://blog.csdn.net/tianruxishui/article/details/44057717 ppp 完全理解(二) pppd 协议及代码分析 作者:李圳均 日期:20 ...
- 最长增长子序列(LIS)
给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4. 说 ...
- 后台拼接json字符串,传到前台时注意特殊符号处理
1.后台拼接常用的形式: sb.AppendFormat("\"字段名\":\"{0}\"", i + 1); 这个要注意字符串截断 ...
- boost 文件系统
第 9 章 文件系统 目录 9.1 概述 9.2 路径 9.3 文件与目录 9.4 文件流 9.5 练习 该书采用 Creative Commons License 授权 9.1. 概述 库 Boo ...
- Mudo C++网络库第二章学习笔记
线程同步的精要 并发有两种基本的模型: 一种是message passing(消息传递); 另一种是shared memory(共享内存); 在分布式系统中(有多台物理机需要通信), 运行在多台机器上 ...
- 004_strace工具
strace - trace system calls and signals 一.strace工具详解 之前线上主机上8351 进程夯死导致无法获悉进程信息,监控程序使用ps 命令查看进程信息至/p ...
- 持续集成①安装部署jenkins从git获取代码
持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...