欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Layui表格配合Laypage分页插件遇见的问题及解决办法

程序员文章站 2022-03-29 08:14:30
...

(本文编写30分钟,预计阅读时间5分钟)

本文前提:

    项目采用的是Layui来渲染表格,由于表格原生的分页并不是那么友好(要查出所有的数据然后前端进行分页,本项目数据量有点大,其次前端分页是比较占性能的一种手段)所以不采用前端分页的方法,然后选择官网给出的Laypage分页插件来给予分页支持。


遇见的问题:

分页的时候表格内容刷新了,而分页一直停留在第1页


解决办法

1、页面加载的时候从后台获取数据

function loadDyna(pageSize,currentPage)
	{
		pageSize=10;
		if(currentPage==""){
			currentPage=1
		}else{
			currentPage=currentPage
		}
		 $.ajax({
			   type: "POST",
			   url: "url地址",
			   data: {"rerId":rerId,"pageinfo.pageSize":pageSize,"pageinfo.currentPage":currentPage},//和后台交互传递所需参数
			   success: function(data){
				  //console.log(currentPage);
				   var data_list=data.releaseStatisticsList//列表内容
				   var allpages=data.pageinfo.totalRecords
				   reloadTable(data_list,pageSize,allpages,currentPage);//渲染表格并传递参数
			   }
		 
			});
	}
   
loadDyna(); //运行定义函数


2、渲染表格

function reloadTable(data,pageSize,allpages,currentPage)
{
layer.load(2); if(data!==""){ layer.closeAll('loading'); //var data = eval('('+data+')'); var mydata= data; var datalength=mydata.length; //console.log(datalength) exp_tableObj.reload({data:mydata,limit:datalength}); //exp_tableObj.reload({data:mydata,limit:datalength}); pageslist(allpages,pageSize,currentPage) } else{ layer.closeAll('loading'); layer.msg("请稍后再试"); }}

data 为表格数据,pageSize为每页显示数量,allpages为总条数,currentPage为当前选择页码

以上参数缺一不可


3、页码渲染

function pageslist(pages,pageSize,currentPage){
		laypage.render({
		    elem: 'pagers'
		    ,count: pages //后台返回分页条数的总和
		    ,limit: pageSize //每页显示的数据的条数,layui会根据count,limit进行分页的计算 
		    ,skip: true
		    ,curr: location.hash.replace('#!currentPage=', '') //获取起始页
		    ,hash: 'currentPage' //自定义hash值
		    ,jump: function(obj, first){
		      if(!first){
		        //layer.msg('第 '+ obj.curr +' 页');
		        loadDyna(pageSize,obj.curr)
		       
		      }
		    }
		  });
		
	}

这里curr和hash很重要,一定要传递这两个参数

表格渲染的时候page设置成false


总结:

该传递的参数一个都不能少,主要还是细心的看官方文档。

相关标签: Layui