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 相关文章推荐
层序遍历在ExtJs的TreePanel中的应用
Oct 16 Javascript
JavaScript 学习笔记(十六) js事件
Feb 01 Javascript
jquery 最简单易用的表单验证插件
Feb 27 Javascript
javascript笛卡尔积算法实现方法
Apr 08 Javascript
jQuery插件jRumble实现网页元素抖动
Jun 05 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
Sep 21 Javascript
jquery 遍历数组 each 方法详解
May 25 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
Jun 09 Javascript
jquery.form.js异步提交表单详解
Apr 25 jQuery
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
Jan 19 Javascript
django js 实现表格动态标序号的实例代码
Jul 12 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
Nov 10 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
用PHP读注册表
2006/10/09 PHP
PHP 身份验证方面的函数
2009/10/11 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
PHP中预定义的6种接口介绍
2015/05/12 PHP
js触发asp.net的Button的Onclick事件应用
2013/02/02 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
JavaScript中的比较操作符&gt;、=、
2014/12/31 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
python实现封装得到virustotal扫描结果
2014/10/05 Python
Python下线程之间的共享和释放示例
2015/05/04 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
python函数map()和partial()的知识点总结
2020/05/26 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
阿里云:Aliyun.com
2017/02/15 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
交通安全演讲稿
2014/01/07 职场文书
优秀员工获奖感言
2014/03/01 职场文书
六个一活动实施方案
2014/03/21 职场文书
公司运动会策划方案
2014/05/25 职场文书
老兵退伍感言
2015/08/03 职场文书
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
Python中递归以及递归遍历目录详解
2021/10/24 Python
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis