基于layPage分页插件浅析两种分页方式
最近在开发过程中经常用到分页,今天挤出些时间来捋一捋自己的经验
在web开发中,一般显示数据列表页时,我们会用到分页控件来显示数据。采用分页一般基于两种不同的需求,一种是数据量不算很大,但是在页面展示又显得过长,看起来很不舒服。一种则是因为数据量太过于庞大,无法一次性去数据库将数据读取出来,于是采用分页的形式去将数据分页显示出来。
前者即所谓的前端分页,而后者就是服务端分页。
两者的区别在于:前端分页是将所有数据取出,为方便用户查看,合理展示数据。在前端js上对数据进行分页。而服务端分页是根据当前页面要展示的内容,通过前端传入的参数,获取对应页面的数据进行展示。简而言之就是前端分页是在前端对数据进行分页,服务端分页这是在后台对数据进行分页。
下面分别展示下使用layPage分页控件两者的用法 
假设后台返回的数据对象如下:
public class people{
    public string name{get;set;}=string.Empty;
    public int age{get;set;}=0;
}
//获取的数据是
List<people> plist;
//JsonConvert.SerializeObject()为序列化对象
return Json(JsonConvert.SerializeObject(plist));1.前端分页
//引用分页控件
<link rel="stylesheet" type="text/css" href="/content/H-UI.Admin/lib/laypage/1.2/skin/laypage.css" />
<script type="text/javascript" src="~/content/H-UI.Admin/lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript">
$(function(){
//获取数据
    $.post("/liveajax/getData",function(data){
       var loaddata=jQuery.parseJSON(data);//将后台获取的json对象转换为数组
       loadData(loaddata);
    })
})
function loadData(data){
    var nums = 10; //每页出现的数量
    //模拟渲染
    var render = function(data, curr){
    var arr = [],thisData = data.concat().splice(curr*nums-nums, nums);
    for(var i = 0; i < thisData.length; i++){
        var str ='<tr><td>thisData[i].name</td><td>thisData[i].age</td></tr>';//拼装一行数据
      arr.push(str);
    }
    return arr.join('');
  };
  laypage({
    cont: 'page'//分页显示的位置
    ,pages: Math.ceil(data.length/nums) //得到总页数
    ,jump: function(obj){
      document.getElementById('pageBody').innerHTML = render(data, obj.curr);//pageBody:分页内容的位置
    }
  });
}
</script>
2.服务端分页:前端传入当前页码、显示数量等请求数据,后台数据库根据分页数据获取对应的数据。即数据库分页查询
//引用分页控件
<link rel="stylesheet" type="text/css" href="/content/H-UI.Admin/lib/laypage/1.2/skin/laypage.css" />
<script type="text/javascript" src="~/content/H-UI.Admin/lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript">
//@ViewBag.TotalCount为数据总数,在初始化时就先获取
    $(function () {
        resetPage(@ViewBag.TotalCount, 1);
    });
    //约定:queryPara(参数)、pageQuery(查询方法)、resetPage(重置分页)
    //查询参数
    var queryPara = {
        page:1,//页码
        psize:10,//行数
    };
    //分页查询
    function pageQuery() {
        var queryUrl = ‘/liveajax/getData2’;
        $.post(queryUrl, queryPara, function (data) {
            $("table.dataTable tbody").html(data);//这里直接可以将对象拼装,或者使用分部视图,将data作为model参数传入分部式图
            resetPage(@ViewBag.TotalCount, queryPara.page);
        });
    }
    //重置分页(跳转分页)
    function resetPage(recordCount, pageIndex) {
        var pages = recordCount % queryPara.psize == 0 ? recordCount / queryPara.psize : recordCount / queryPara.psize + 1;
        laypage({
            cont: "page", //容器。值支持id名、原生dom对象,jquery对象。【如该容器为】:<div id="page1"></div>
            pages: pages, //通过后台拿到的总页数
            curr: pageIndex, //当前页
            jump: function (obj, first) { //触发分页后的回调
                if (!first) { //点击跳页触发函数自身,并传递当前页:obj.curr
                    queryPara.page = obj.curr;
                    pageQuery();
                }
            }
        });
    }
  </script>基于layPage分页插件浅析两种分页方式的更多相关文章
- bootstrap-paginator分页插件的两种使用方式
		分页有两种方式: 1. 前台分页:ajax一次请求获取全部数据,适合少量数据(万条数据以下): $.ajax({ type: "GET", url: "",// ... 
- 基于Redis的分布式锁两种实现方式
		最近有一个竞拍的项目会用到分布式锁,网上查到的结果是有三种途径可以实现.1.数据库锁机制,2.redis的锁,3.zookeeper.考虑到使用mysql实现会在性能这一块会受影响,zookeeper ... 
- spring事务详解(基于注解和声明的两种实现方式)
		Spring事务( Transaction ) 事务的概念 事务是一些sql语句的集合,作为一个整体执行,一起成功或者一起失败. 使用事务的时机 一个操作需要多天sql语句一起完成才能成功 程序中事务 ... 
- SQL Server两种分页的存储过程介绍
		由于现在很多的企业招聘的笔试都会让来招聘的写一个分页的存储过程,有的企业甚至要求应聘者用两种方式实现分页,如果没有在实际项目中使用过分页,那么很多的应聘者都会出现一定的问题,下面介绍两种分 ... 
- PostgreSQL两种分页方法查询时间比较
		数据库中存了3000W条数据,两种分页查询测试时间 第一种 SELECT * FROM test_table WHERE i_id> limit 100; Time: 0.016s 第二种 SE ... 
- jquery插件的两种形式
		这里总结一下jquery插件的两种形式,一种是通过字面量的形式组织代码,另一种是通过构造函数的方式.下面就两种形式来分析俩个例子. 例子1: ;(function ($,window,document ... 
- jQuery插件主要有两种扩展方式
		jQuery插件主要有两种扩展方式: 扩展全局函数方式. 扩展对象方法方式. 扩展全局函数方式 扩展全局函数方式定义的插件,即类级别插件,可以通过jQuery.extend()来进行定义.定义格式为: ... 
- jQuery中开发插件的两种方式
		jQuery中开发插件的两种方式(附Demo) 做web开发的基本上都会用到jQuery,jQuery插件开发两种方式:一种是类扩展的方式开发插件,jQuery添加新的全局函数(jQuery的全局函数 ... 
- 安装jenkins插件的两种方法
		安装jenkins插件有两种方法,一种是在线安装,一种是离线安装.两种方式介绍如下: 1.如果服务器可以上网,那边选择在线安装最好不过了,安装流程为:系统管理----插件管理---选择需要的插件直接安 ... 
随机推荐
- del|append()|insert()|pop()|remove()|sort()|sorted|reverse()|len()|range()|min()|max()|sum()|[:]|区分两种列表复制|
			fruit = ['apple','banana','peach'] print fruit[0],fruit[-1] fruit_1 =[] fruit_1.append('orange') pri ... 
- Escape from the Hell
			Escape from the Hell [JAG Asia 2016] 容易证明优先选择差值大的更优 对于最后一瓶我们可以枚举 枚举最后一瓶,然后在树状数组上消去它的影响,然后线段树check是否出 ... 
- plsql中文显示问号
			1. select userenv('language') from dual 2. 复制查询的值配置系统环境变量 NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 3.配置系统环 ... 
- iOS 后台任务
			首先开启后台任务 使用设置后台任务触发的时机 application.setMinimumBackgroundFetchInterval(UIApplication.backgroundFetchIn ... 
- VBA自动点击IE的浏览按钮、自动选择路径、自动关闭打开文件对话框
			VBA调用InternetExplorer操作IE浏览器,自动弹出文件选择对话框时,VBA会处于阻塞状态,你必须手工关闭文件选择对话框,VBA才能继续向后运行. 例如下面网址,就有一个文件浏览按钮: ... 
- 聊聊HTTPS和SSL/TLS协议 【基础入门】
			要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接 ... 
- 年度Java技术盘点,懂这些技术的程序员2019发展大好
			与一年前一样,Java仍然是最流行的编程语言.据TIOBE的数据显示,几十年来,Java比其他语言更常名列榜首,Java因为它拥有可移植性.可扩展性和庞大的用户社区,所以许多知名互联网公司使用Java ... 
- 做成像的你不得不了解的真相2-灵敏度和QE
			科研级相机的灵敏度由三个主要参数决定: 探测器的QE, 像元尺寸和相机噪声. 后两项我们以后再做专题讨论.这期先讲讲小编认为顶顶重要,看起来最容易理解,但是其实还有些奥妙的QE. QE-量子效率 QE ... 
- [LC] 287. Find the Duplicate Number
			Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), pro ... 
- bootstrap实现多选项及回显
			1.前端 <link rel="stylesheet" href="${ctxStatic}/js/bootstrap-select-1.12.2/dist/css ... 
