今天在使用layui数据表格的时候,我想实现一个添加行的操作,但是要添加行就得先获得当前所有的数据,如果不分页的话layui.table.cache['test'];还可以获取所有的数据,
但是如果数据很多需要分页展示的话以上方法就只能获取当前页面的所有数据,此时如果再去添加行就会有问题。经过一番研究我想出了以下办法来解决。
先用最大的数据limit去table.reload,让所有的数据在同一页展示,并获取当前页的所有数据(此时获取的数据就是所有分页的数据)。然后添加行之后,再执行一次重载(此时
使用正常的分页数量)。这样虽然在后台逻辑上看是重载了两次,但是在使用者的角度去看是看不出来的,他只能看到最后一次重载的结果。
下面贴出解决代码:
function addRow(){
var page = $(".layui-laypage-skip").find("input").val(); //获取当前页码
layui.table.reload('test', {
page: {
limit: Number.MAX_VALUE
,curr: 1
}
});
var tableData = layui.table.cache['test'];
tableData.push(blankRow);
/* 两次重载是为了解决 table.cache.basic只能获取当前页的数据的缺陷*/
layui.table.reload('test', {
page: {
limit: 10
,curr: page
}
,data: tableData
});
}