基于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 相关文章推荐
html中的input标签的checked属性jquery判断代码
Sep 19 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
Jun 04 Javascript
javascript的创建多行字符串的7种方法
Apr 29 Javascript
React Native之prop-types进行属性确认详解
Dec 19 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
Feb 08 Javascript
Vue进度条progressbar组件功能
Apr 17 Javascript
vue.js打包之后可能会遇到的坑!
Jun 03 Javascript
vue better scroll 无法滚动的解决方法
Jun 07 Javascript
一步步教你利用Docker设置Node.js
Nov 20 Javascript
JavaScript监听键盘事件代码实现
Jun 03 Javascript
详解如何在Javascript中使用Object.freeze()
Oct 18 Javascript
小程序实现密码输入框
Nov 16 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
浅谈对yield的初步理解
2017/05/29 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
python实现定时发送邮件
2020/12/23 Python
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
美国眼镜网:GlassesUSA
2017/09/07 全球购物
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
工作自荐信
2013/12/11 职场文书
预备党员入党思想汇报
2014/01/04 职场文书
认购协议书范本
2014/04/22 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
模范教师材料大全
2014/12/16 职场文书
大学运动会加油稿
2015/07/22 职场文书
检讨书范文
2019/04/16 职场文书
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android