本文实例为大家分享了layUI实现前端分页和后端分页效果,供大家参考,具体内容如下
layui后端分页:
function pagination(curr,gwayId,mlity,ePart) {
$(".manage_ys_list").html('加载中...')
let dd={
conditions: {
gatewayId:gwayId,
searchText:"",
pageSize:15,
pageIndex:curr-1
},
identity:{
"userName":userName1,
"sessionId":sessionId1,
"token":token2
}
}
$.ajax({
type:"POST",
dataType: 'json',
url:UserListPaged,
data:dd,
headers:{ 'X-Requested-With': 'XMLHttpRequest' },
success:function(data){
let total=data.data.recordCount
let pageCount=data.data.pageCount
let pageSize=data.data.pageSize
if(data.data.recordCount>=0){
let dataHtml = ''
for(var i=0i<data.data.result.lengthi++){
dataHtml += '<tr><td>'+data.data.result[i].gatewayId+'</td><td>'+data.data.result[i].userId+
'</td><td>'+data.data.result[i].realName+'</td><td>'+data.data.result[i].sex+'</td><td>'+data.data.result[i].workUnit+
'</td><td>'+data.data.result[i].phoneNo+'</td><td>'+data.data.result[i].isAdmin+
'</td><td><a title="" class="btn btn-sm btn-info text-white manage_ys_xg" gatewayId="'+
data.data.result[i].gatewayId+'" userId="'+data.data.result[i].userId+
'" realName="'+data.data.result[i].realName+'" sex="'+data.data.result[i].sex+
'" age="'+data.data.result[i].age+'" birthday="'+data.data.result[i].birthday+
'" workUnit="'+data.data.result[i].workUnit+'" phoneNo="'+data.data.result[i].phoneNo+
'" isAdmin="'+data.data.result[i].isAdmin+'">修改</a><a href="#" rel="external nofollow" title="" class="btn btn-warning text-white btn-sm man_ys_shanc" gatewayId="'+
data.data.result[i].gatewayId+'" userId="'+data.data.result[i].userId+'">删除</a></td></tr>'
}
$(".manage_ys_list").html(dataHtml)
}else{
$(".manage_ys_list").html('<li>暂无数据</li>')
}
//显示分页
layui.use(['laypage', 'layer'], function(){
var laypage = layui.laypage
,layer = layui.layer
laypage.render({
elem: 'page' //注意,这里的 test1 是 ID,不用加 # 号
,count: total//数据总数,从服务端得到
,limit: 15//每页显示条数
,curr: curr || 1 //当前页
首先,最简单的先渲染一个表格,参考官方示例:
这里先讲讲一些渲染细节:
layui内部就是根据cols属性里面每项的field字段来输出数据(该字段跟后台返回的数据字段一致即可输出)。
另外,layui拼接html字符串的方式多次应用数组join方法的方式,这种方式值得安利一波:
否则用传统方式拼接html字符串就相形见绌了(不推荐):
接着,看一下分页:
从图中可以看出,我们请求地址没加请求参数,layui自动帮我们添加了page,limit的请求参数,默认值分别为1, 10,这是开启了分页的缘故(page: true)。那么,请求参数名是否可以定制呢?答案是可以的,参考request属性:
同样,响应参数名也是可以定制的,参考response属性:
注意,以上只是定制了参数名字而已,接下来才是重头戏:定制数据格式,参考parseData属性:
parseData可以帮助我们定制好与layui对应的表格数据格式,从而输出表格,这是很有用的,毕竟后端前辈返回的数据格式未必跟layui的一致呀。有了以上3种定制方式,我们就不惧输出数据表格了。采用这种方式输出的就是真正的实现了分页,下文提及的方式可不是真正的分页。
-----------------------快乐的分割线,前方jojo高能-----------------------
可能也有小伙伴无视了 request、response、parseData 三剑客,转而用起了data属性,过程如下:
拒绝了使用url属性请求,转用jquery ajax请求数据,最后再tableIns.reload({ data: res.data })一波,达成666操作。
这种做法从结果上看,似乎是可以的。。。。。。搭嘎,口头挖撸。
因为通过data属性赋值是不会分页去请求后端的,而是直接请求全部数据,然后layui内部进行前端分页处理,这样一来,如果数据量大的话,恐怕页面就要刷好一会儿了o(╥﹏╥)o。(只有通过data方式赋值才会进行前端分页处理,所以url方式可以放心食用)。