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 相关文章推荐
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
Apr 13 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
Jan 19 Javascript
js获取select默认选中的Option并不是当前选中值
May 07 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
Jan 06 Javascript
JS实现1000以内被3或5整除的数字之和
Feb 18 Javascript
node网页分段渲染详解
Sep 05 Javascript
Js动态设置rem来实现移动端字体的自适应代码
Oct 14 Javascript
漂亮实用的页面loading(加载)封装代码
Feb 03 Javascript
Vue路由之JWT身份认证的实现方法
Aug 26 Javascript
Vue分页插件的前后端配置与使用
Oct 09 Javascript
浅谈Vue.use到底是什么鬼
Jan 21 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
Aug 31 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实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
javascript写的日历类(基于pj)
2010/12/28 Javascript
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
python中xrange和range的区别
2014/05/13 Python
使用Python操作MySQL的一些基本方法
2015/08/16 Python
详解python的几种标准输出重定向方式
2016/08/15 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
python and or用法详解
2019/06/26 Python
印度低票价航空公司:GoAir
2017/10/11 全球购物
北京华建集团SQL面试题
2014/06/03 面试题
卫校护理专业毕业生求职信
2013/11/26 职场文书
新学期校长寄语
2014/01/18 职场文书
本科生职业生涯规划书范文
2014/01/21 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
CSS的calc函数用法小结
2022/06/25 HTML / CSS