DataTables 1.10+:如何在分页插件函数中获取每页行数
解决DataTables自定义分页插件中获取每页行数的问题
核心方法:通过插件接收的settings参数获取
DataTables的自定义分页插件函数会自动接收一个settings对象参数,其中包含表格的所有配置和状态信息,无需额外获取API实例就能从中提取每页行数:
- 获取初始化时的
pageLength配置
直接从settings.oInit.pageLength读取初始化时设置的每页行数,同时可以加上默认值兼容未配置的情况:
function myCustomPagination(settings) { const pageLength = settings.oInit.pageLength || 10; // 10为DataTables默认每页行数 // 后续分页逻辑处理 }
- 获取当前生效的每页行数(支持动态修改后的值)
如果用户在表格运行过程中修改了每页行数(比如通过内置的每页条数选择器),可以从settings._iDisplayLength读取当前实际生效的数值:
function myCustomPagination(settings) { const currentPageLength = settings._iDisplayLength; // 后续分页逻辑处理 }
结合10000条记录限制的改造示例
参考Simple Numbers - No Ellipses插件结构,你可以用获取到的每页行数计算最大可显示页码,从而限制总记录数不超过10000:
jQuery.fn.dataTableExt.oPagination.customLimitedPagination = { "fnInit": function(oSettings, nPaging, fnDraw) { // 初始化时计算最大页码 const pageLength = oSettings._iDisplayLength; const maxTotal = 10000; const maxPage = Math.floor(maxTotal / pageLength); // 分页DOM渲染逻辑... }, "fnUpdate": function(oSettings, fnDraw) { // 更新分页时重新计算最大页码 const currentPageLength = oSettings._iDisplayLength; const maxTotal = 10000; const maxPage = Math.floor(maxTotal / currentPageLength); // 根据maxPage限制可点击的页码范围... } };
关键说明
settings是DataTables调用分页插件时自动传入的核心对象,无需手动创建API实例就能访问。_iDisplayLength是DataTables内部维护的当前每页显示行数,会同步用户的动态修改,比初始化配置的pageLength更准确。
内容的提问来源于stack exchange,提问作者Oliver
相关产品推荐
相关产品推荐

