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 ...
随机推荐
- BIM 3D 数据交换格式 ----张建平(清华女)
1.collada EXPORTER 2.FBX 3D MAX 3.DAE 4.3D中的OBJ文件格式详解 ( http://www.cnblogs.com/slysky/p/408130 ...
- 设计模式C++学习笔记之四(Multition多例模式)
多例模式,这个在GOF的模式设计里没有提到,但在实际工作中确实会用到.更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com. 4.1.解释 main(),客户 略 说明: ...
- vc++基础班[21]---文件的基本操作之CFile
①.文件的创建.打开.关闭: 文件的创建.打开:CFile::Open 文件的关闭:CFile::Close CFile::modeCreate:以新建方式打开,如果文件不存在,则新建:如果文件已 ...
- Python在线聊天软件(Tkinter)
1.python2.7下安装 apt-get install python-tk 主要功能是实现客户端与服务器端的双向通信,这个小东西用到的主要知识点: 1.Python Socket:2.Pytho ...
- 在本地SharePoint 2013 搭建App开发环境
1.环境描述: SharePoint服务器: Windows Server 2012 R2+SharePoint 2013 IP:192.168.1.180,域控:ser.com 开发环境: Wind ...
- windows下揪出java程序占用cpu很高的线程
背景 天天搞java,这些监控也都知道,用过,但也没往细里追究.因为也没碰见这种问题,这次还是静下来走一遍流程吧.与网上基本一致,不过我区分了下linux和windows的不一样.我感觉基本是程序写成 ...
- layui 各种弹出框
第一步:引用文件 第二步:写脚本 <script> //iframe窗 //layer.open({ // type: 2, // title: false, // closeBtn: 0 ...
- 13)django-ORM(连表一对多,外键创建,创建数据,3种查询)
一对多需要使用外键 一:外键创建ForeignKey b=models.ForeignKey(to="Business",to_field=("id"))#dj ...
- python-函数入门(二)
一.函数对象 什么是函数? 函数是第一类对象,指的是函数名指向的值(函数)可以被当做数据去使用 1.函数的特性 1.函数可以被引用,即函数可以把值赋值给一个变量 def foo(): print('f ...
- Android 应用防止被二次打包指南
前言 “Android APP二次打包”则是盗版正规Android APP,破解后植入恶意代码重新打包.不管从性能.用户体验.外观它都跟正规APP一模一样但是背后它确悄悄运行着可怕的程序,它会在不知不 ...