layui2.0使用table+laypage实现真分页
前言:最近项目上使用layui做前端页面,发现layui的table本身的分页不能根据屏幕生成每页行数,所以研究了下文档,更改分页
简单解释:
1.最开始是根据屏幕计算加载的每页行数
2.framework可以糊了,由于是老项目还使用了sea.js
3.getUrlParam()是用于其他页面带参数跳转的也可以忽略
functiongetUrlParam(name){
varreg=newRegExp("(^|&)"+name+"=([^&]*)(&|$)");//构造一个含有目标参数的正则表达式对象
varr=window.location.search.substr(1).match(reg);//匹配目标参数
if(r!=null)returndecodeURI(r[2]);returnnull;//返回参数值
}
4.templet属性用于对后端接收到的数据进行格式化,其他属性请自行查看官方文档
5.laypage中的jump方法!first必须加,否则会无限调用接口,无法结束初始化
具体js代码如下:
functiongetData(page){
varrows=Math.floor(($(window).height()-$('.topNav').height()
-$('.content.noBorderB').height()
-$('.content.searchD').height()
-$('.content.commonTbtr:eq(0)').height()-100)/30);
rows=rows<=0?1:rows;
framework.hideLoading();
varobjectIdSearch=getUrlParam("objectId");
if(objectIdSearch==''||objectIdSearch==undefined){
objectIdSearch=$.trim($("#idSearch").val());
}
varpages=1;
varcounts=1;
layui.use('table',function(){
vartable=layui.table;
varlaypage=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//全局定义常规单元格的最小宽度,layui2.2.1新增
,cols:[[
{field:'id',title:'ID',align:'center',sort:true,width:80}
,{field:'audioBook',width:80,align:'center',title:'有声书ID',templet:function(d){
returnd.audioBook.id
}}//width支持:数字、百分比和不填写。你还可以通过minWidth参数局部定义当前单元格的最小宽度,layui2.2.1新增
,{field:'audioBook',width:124,align:'center',title:'有声书名称',sort:true,templet:function(d){
returnd.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){
returnd.chapter.id
}}
,{field:'chapter.title',width:180,title:'章节名称',align:'center',templet:function(d){
returnd.chapter.title
}}//单元格内容水平居中
,{field:'payTimes',width:120,title:'购买次数',sort:true,align:'center'}//单元格内容水平居中
,{field:'createTime',width:180,title:'购买时间',sort:true,align:'center',templet:function(d){
returnlongTrans2Date(d.createTime)
}}
,{field:'userInfo',width:80,title:'用户ID',sort:true,align:'center',templet:function(d){
returnd.userInfo.userId
}}
,{field:'userInfo',width:160,title:'用户名称',sort:true,align:'center',templet:function(d){
returnd.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)
}
}
});
}
});
})
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
