layui2.0使用table+laypage实现真分页


Posted in Javascript onJuly 27, 2019

前言:最近项目上使用layui做前端页面,发现layui的table本身的分页不能根据屏幕生成每页行数,所以研究了下文档,更改分页

简单解释:

1.最开始是根据屏幕计算加载的每页行数
2.framework可以糊了,由于是老项目还使用了sea.js
3.getUrlParam()是用于其他页面带参数跳转的也可以忽略

function getUrlParam(name) {
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
  var r = window.location.search.substr(1).match(reg); //匹配目标参数
  if (r != null) return decodeURI(r[2]); return null; //返回参数值
 }

4.templet属性用于对后端接收到的数据进行格式化,其他属性请自行查看官方文档
5.laypage中的jump方法!first必须加,否则会无限调用接口,无法结束初始化

具体js代码如下:

function getData(page) {
  var rows = Math.floor(($(window).height() - $('.topNav').height()
   - $('.content .noBorderB').height()
   - $('.content .searchD').height()
   - $('.content .commonTb tr:eq(0)').height() - 100) / 30);
  rows = rows <= 0 ? 1 : rows;
  framework.hideLoading();
  var objectIdSearch = getUrlParam("objectId");
  if(objectIdSearch==''||objectIdSearch==undefined){
   objectIdSearch = $.trim($("#idSearch").val());
  }
  var pages=1;
  var counts=1;

  layui.use('table', function(){
   var table = layui.table;
   var laypage=layui.laypage;
   table.render({
    elem: '#test'
    // , url: {
    ,url:'/app/client/user/audio/listp'
    ,method:"get"
    ,where: {
     pageNo : page,
     pageSize : rows,
     objectId : objectIdSearch ,
     userId : $.trim($("#userIdSearch").val()),
     userName : $.trim($("#userNameSearch").val()),
     objectName : $.trim($("#audioNameSearch").val()),
     chapterName : $.trim($("#chapterNameSearch").val()),
     createTime : $.trim($("#createTime").val())
    }
    ,response:{
     statusName: 'page' //数据状态的字段名称,默认:code
     ,statusCode: page //成功的状态码,默认:0
     ,countName: 'records' //数据总数的字段名称,默认:count
     ,dataName: 'rows' //数据列表的字段名称,默认:data
    }
    // }
    , cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
    , cols: [[
     {field: 'id', title: 'ID', align: 'center', sort: true,width:80}
     , {field: 'audioBook',width:80, align: 'center', title: '有声书ID', templet: function(d){
       return d.audioBook.id
      }} //width 支持:数字、百分比和不填写。你还可以通过 minWidth 参数局部定义当前单元格的最小宽度,layui 2.2.1 新增
     , {field: 'audioBook',width:124, align: 'center', title: '有声书名称', sort: true,templet: function(d){

      return d.audioBook.name
      }}
     , {field: 'objectType',width:80, align: 'center', title: '类型' , templet: function(d){
      if(d=='20'){
       return "有声书"
      }else{
       return "课程"
      }
     }}
     , {field: 'chapter',width:80, align: 'center', sort: true,title: '章节ID', templet: function(d){
      return d.chapter.id
     }}
     , {field: 'chapter.title',width:180, title: '章节名称', align: 'center', templet: function(d){
      return d.chapter.title
     }} //单元格内容水平居中
     , {field: 'payTimes',width:120, title: '购买次数', sort: true, align: 'center'} //单元格内容水平居中
     , {field: 'createTime',width:180, title: '购买时间', sort: true, align: 'center', templet: function(d){
      return longTrans2Date(d.createTime)
     }}
     , {field: 'userInfo',width:80, title: '用户ID', sort: true, align: 'center', templet: function(d){
      return d.userInfo.userId
     }}
     , {field: 'userInfo',width:160, title: '用户名称', sort: true, align: 'center', templet: function(d){
      return d.userInfo.userName
     }}
    ]]
    , done: function(res, curr, count){
     pages=res.page;
     counts=res.records;
     //完整功能
     laypage.render({
      elem: 'demo7'
      ,count: counts
      ,curr: pages
      ,limit:rows
      ,layout: ['count', 'prev', 'page', 'next', 'refresh', 'skip']
      ,jump: function(obj,first){
       // getData(obj.curr)
       if(!first){
        getData(obj.curr)
       }
      }
     });

    }
   });

  })

 }

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

Javascript 相关文章推荐
Jquery加载时从后台读取数据绑定到dropdownList实例
Jun 09 Javascript
使用JS+plupload直接批量上传图片到又拍云
Dec 01 Javascript
jQuery动画与特效详解
Feb 01 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 Javascript
全面解析多种Bootstrap图片轮播效果
May 27 Javascript
微信小程序实战之上拉(分页加载)效果(2)
Apr 17 Javascript
jQuery Jsonp跨域模拟搜索引擎
Jun 17 jQuery
深入掌握 react的 setState的工作机制
Sep 27 Javascript
详解webpack的proxyTable无效的解决方案
Jun 15 Javascript
搭建基于express框架运行环境的方法步骤
Nov 15 Javascript
js canvas实现橡皮擦效果
Dec 20 Javascript
ES11屡试不爽的新特性,你用上了几个
Oct 21 Javascript
微信小程序 腾讯地图显示偏差问题解决
Jul 27 #Javascript
基于layPage插件实现两种分页方式浅析
Jul 27 #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
You might like
星际RPG字典
2020/03/04 星际争霸
PHP 分页原理分析,大家可以看看
2009/12/21 PHP
解析php中call_user_func_array的作用
2013/06/07 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
Python json转字典字符方法实例解析
2020/04/13 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
建龙钢铁面试总结
2014/04/15 面试题
主持人演讲稿范文
2013/12/28 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
财务会计专业求职信
2014/06/09 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
党员自我评价范文2015
2015/03/03 职场文书
法律意见书范本
2015/06/04 职场文书
初一军训感言
2015/08/01 职场文书
护理工作心得体会
2016/01/22 职场文书
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫
Linux中sftp常用命令整理
2022/06/28 Servers
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技