You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataTables 1.10+:如何在分页插件函数中获取每页行数

解决DataTables自定义分页插件中获取每页行数的问题

核心方法:通过插件接收的settings参数获取

DataTables的自定义分页插件函数会自动接收一个settings对象参数,其中包含表格的所有配置和状态信息,无需额外获取API实例就能从中提取每页行数:

  1. 获取初始化时的pageLength配置
    直接从settings.oInit.pageLength读取初始化时设置的每页行数,同时可以加上默认值兼容未配置的情况:
function myCustomPagination(settings) {
  const pageLength = settings.oInit.pageLength || 10; // 10为DataTables默认每页行数
  // 后续分页逻辑处理
}
  1. 获取当前生效的每页行数(支持动态修改后的值)
    如果用户在表格运行过程中修改了每页行数(比如通过内置的每页条数选择器),可以从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:35:19