基于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+XML 省份和城市之间的联动实现代码
Oct 14 Javascript
浅谈javascript中的DOM方法
Jul 16 Javascript
巧用canvas
Jan 21 Javascript
ES6入门教程之Iterator与for...of循环详解
May 17 Javascript
详解vue 模版组件的三种用法
Jul 21 Javascript
JavaScript对JSON数据进行排序和搜索
Jul 24 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
Aug 14 Javascript
vue实现个人信息查看和密码修改功能
May 06 Javascript
create-react-app修改为多页面支持的方法
May 17 Javascript
vue组件tabbar使用方法详解
Nov 06 Javascript
亲自动手实现vue日历控件
Jun 26 Javascript
vue实现图片预览组件封装与使用
Jul 13 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
php设计模式之命令模式的应用详解
2013/05/21 PHP
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
jquery插件推荐 jquery.cookie
2014/11/09 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
JavaScript检查数字是否为整数或浮点数的方法
2015/06/09 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
JSONP基础知识详解
2017/03/19 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
JS this关键字在ajax中使用出现问题解决方案
2020/07/17 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
Python内置函数—vars的具体使用方法
2017/12/04 Python
django静态文件加载的方法
2018/05/20 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
2015年五一劳动节活动总结
2015/02/09 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
PyTorch的Debug指南
2021/05/07 Python
python 中yaml文件用法大全
2021/07/04 Python
Python turtle编写简单的球类小游戏
2022/03/31 Python