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 相关文章推荐
通过一段代码简单说js中的this的使用
Jul 23 Javascript
详解JavaScript正则表达式中的global属性的使用
Jun 16 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
Jul 28 Javascript
JavaScript仿微博输入框效果(案例分析)
Dec 06 Javascript
jQuery上传多张图片带进度条样式(DEMO)
Mar 02 Javascript
基于Vuejs和Element的注册插件的编写方法
Jul 03 Javascript
axios拦截设置和错误处理方法
Mar 05 Javascript
微信上传视频文件提示(推荐)
Nov 22 Javascript
Vue.js组件props数据验证实现详解
Oct 19 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
Mar 03 Javascript
js实现表单项的全选、反选及删除操作示例
Jun 05 Javascript
Webpack3+React16代码分割的实现
Mar 03 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
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
php浏览历史记录的方法
2015/03/10 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
JavaScript中的集合及效率
2010/01/08 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
Python出现segfault错误解决方法
2016/04/16 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
总裁办公室主任职责
2014/01/02 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
环保倡议书100字
2014/05/15 职场文书
文艺晚会策划方案
2014/06/11 职场文书
大学生就业求职信
2014/06/12 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
无保留意见审计报告
2015/06/05 职场文书
二婚主持词
2015/06/30 职场文书
CAD实训总结范文
2015/08/03 职场文书
vue实现登陆页面开发实践
2022/05/30 Vue.js