Datatables插件问题:重载Ajax不丢页码但最后页删完数据报错
Datatables 保留页码重载Ajax时最后一页删空报错的解决办法
当你用table.ajax.reload(null,false)保留当前页码重载数据,但最后一页的行被全部删除后,会因目标页码无数据报错。可以用以下两种方式处理:
方式一:删除后预判调整页码
在执行删除操作后,先判断当前页是否是最后一页且删除后会空页,提前跳转到有效页码再重载:
// 删除操作完成后执行 const pageInfo = table.page.info(); // 当前是最后一页,且当前页的行数等于要删除的数量(可根据实际删除逻辑调整判断条件) if (pageInfo.page === pageInfo.pages - 1 && table.rows({page: 'current'}).count() === 1) { // 若不是第一页,跳转到上一页 if (pageInfo.page > 0) { table.page(pageInfo.page - 1).draw(false); } } // 重载数据,保留当前(已调整的)页码 table.ajax.reload(null, false);
方式二:重载后回调修正页码
借助ajax.reload()的回调函数,在数据重载完成后检查分页状态,自动修正到有效页码:
table.ajax.reload(function() { const newPageInfo = table.page.info(); // 当前页码超出了新的总页数,说明原页码已无效 if (table.page() >= newPageInfo.pages) { // 跳转到最后一页(总页数为0时会自动显示空状态) table.page(newPageInfo.pages - 1).draw(false); } }, false);
这两种方式都能避免无数据页码导致的报错,同时尽可能保留用户的分页上下文。
内容的提问来源于stack exchange,提问作者Camilo Andrés Fique
相关产品推荐
相关产品推荐

