基于layPage插件实现两种分页方式浅析


Posted in Javascript onJuly 27, 2019

最近在开发过程中经常用到分页,今天挤出些时间来捋一捋自己的经验

在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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js下弹出窗口的变通
Apr 18 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
Mar 28 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
Jan 09 Javascript
javascript中Object使用详解
Jan 26 Javascript
简单的JS时钟实例讲解
Jan 13 Javascript
深入理解bootstrap框架之第二章整体架构
Oct 09 Javascript
最常用的jQuery表单验证(简单)
May 23 jQuery
JavaScript实现的简单Tab点击切换功能示例
Jul 06 Javascript
JS中Promise函数then的奥秘探究
Jul 30 Javascript
vue 的 solt 子组件过滤过程解析
Sep 07 Javascript
layer弹出层显示在top顶层的方法
Sep 11 Javascript
vue 全局封装loading加载教程(全局监听)
Nov 05 Javascript
基于ssm框架实现layui分页效果
Jul 27 #Javascript
layUI实现前端分页和后端分页
Jul 27 #Javascript
layui实现数据分页功能(ajax异步)
Jul 27 #Javascript
layui实现数据表格table分页功能(ajax异步)
Jul 27 #Javascript
layui实现数据分页功能
Jul 27 #Javascript
layUI实现列表查询功能
Jul 27 #Javascript
Layui实现带查询条件的分页
Jul 27 #Javascript
You might like
一个用于MySQL的PHP XML类
2006/10/09 PHP
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
基于php使用memcache存储session的详解
2013/06/25 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
JavaScript中length属性的使用方法
2015/06/05 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
js智能获取浏览器版本UA信息的方法
2016/08/08 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
python实现远程控制电脑
2019/05/23 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
python中wheel的用法整理
2020/06/15 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
python 6行代码制作月历生成器
2020/09/18 Python
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
大专学生推荐信范文
2013/11/19 职场文书
汽车检测与维修专业求职信
2014/07/04 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
经典演讲稿开场白
2014/08/25 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
聘任书范文大全
2015/09/21 职场文书
班主任培训研修日志
2015/11/13 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
golang import自定义包方式
2021/04/29 Golang