现在想对layui table做一个总结,比较难的是分页,数据量大的时候要实现服务端分页,前端分页的话数据量太大估计不行,在sql语句里优化和只查询当前页需要显示的数据,这样速度就会快很多。
我将table的操作分了几个部分
页面如下所示,初始状态只显示搜索栏,点击“Inquire”后显示相应的数据。
基本步骤是:点击查询之后,使用ajax 往后台请求数据,
ajax的参数是页码,显示数量,排序的字段,和排序的type(asc或者desc),其他参数自己设定
请求成功后先渲染laypage,在jump里渲染table,因为每次换页码都要触发jump ,所以只能在jump 里渲染table 了。
点击分页和改变每页显示条数都会再次触发ajax 请求。
我一般都会把table 的渲染单独写在一个function 里方便调用
渲染表格
//curr 是当前页
//obj 是排序对象
//limit 是显示数据的条数
function initTable(limit,curr,obj)
{
$.ajax({
type:'post',
url: '' + rootpath + 'LabelQuery/getIMLabel',
dataType: 'json',
data: {
'limit':limit,
'curr': curr,
'sortField':obj.field,
'sortType': obj.type,
'material': $.trim($('#material').val()),
'demand':$.trim($('#demand').val()),
'demandItem':$.trim($('#demandItem').val()),
'demandType': $.trim($('#demandType').val()),
'deliveryDate': $.trim($('#deliveryDate').val()),
'CreatedOn': $.trim($('#CreatedOn').val()),
'Status': $.trim($('#Status').val()),
'enoughSupply': $.trim($('#enoughSupply').val()),
},
beforeSend:function(){
this.index=layer.load(2);
},
complete:function(){
layer.close(this.index);
},
success:function(data, status, xhr){
if(xhr.status==200){
if(data.code==-1){
window.location.replace(''+rootpath+'Home/Login')
}else{
//使用laypage
laypage.render({
elem: 'page'
, curr: curr
, limit: limit
, count: data