基于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 相关文章推荐
javascript中的self和this用法小结
Feb 08 Javascript
javascript移出节点removeChild()使用介绍
Apr 03 Javascript
js隐式全局变量造成的bug示例代码
Apr 22 Javascript
AngularJS压缩JS技巧分析
Nov 08 Javascript
js实现页面刷新滚动条位置不变
Nov 27 Javascript
用jQuery实现可输入多选下拉组合框实例代码
Jan 18 Javascript
JS实现DIV高度自适应窗口示例
Feb 16 Javascript
微信小程序实现皮肤功能(夜间模式)
Jun 18 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
Sep 05 Javascript
详解10分钟学会vue滚动行为
Sep 21 Javascript
JavaScript 截取字符串代码实例
Sep 05 Javascript
Vue项目打包部署到apache服务器的方法步骤
Feb 01 Vue.js
基于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
改造一台复古桌面收音机
2021/03/02 无线电
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
php伪静态之APACHE篇
2014/06/02 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
javascript Math.random()随机数函数
2009/11/04 Javascript
js 实现无干扰阴影效果 简单好用(附文件下载)
2009/12/27 Javascript
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
js简单抽奖代码
2015/01/16 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
2017/06/09 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
Python中使用Inotify监控文件实例
2015/02/14 Python
Python的Django REST框架中的序列化及请求和返回
2016/04/11 Python
Python中shutil模块的常用文件操作函数用法示例
2016/07/05 Python
对python中UDP,socket的使用详解
2019/08/22 Python
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
平面设计师工作职责范文
2013/12/03 职场文书
医学生职业规划范文
2014/01/05 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
中秋节活动总结
2014/08/29 职场文书
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript
python高温预警数据获取实例
2022/07/23 Python