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

非服务器端Datatables获取筛选后行数问题求助

解决客户端模式下Datatable筛选后行数显示问题

问题原因

是的,这确实和未启用服务器端处理有关。在客户端模式下,Datatable默认不会自动维护recordsFiltered属性的值——这个字段原本是为服务器端处理设计的,由后端返回筛选后的总行数。客户端模式下,page.info()返回的recordsFiltered会和recordsTotal保持一致,所以直接用它无法获取筛选后的真实行数。

正确获取筛选后行数的方法

你需要通过Datatable实例的API直接获取筛选后的行数量,具体步骤如下:

  1. 确保持有Datatable实例引用
    初始化表格时保存实例对象,方便后续调用API:

    // 替换成你的表格ID
    var datatable = $("#your-table-id").DataTable({
      // 你的表格配置项,比如columns、paging等
    });
    
  2. 获取筛选后的行数并更新显示
    使用rows({ search: 'applied' }).count()方法获取当前应用筛选后的总行数,然后替换原代码中的recordsFiltered:

    // 获取分页信息
    var datatableInfo = datatable.page.info();
    // 获取筛选后的总行数
    var filteredRowCount = datatable.rows({ search: 'applied' }).count();
    // 更新页面显示的信息文本
    $("#data-kt-table-info").html("Showing " + (datatableInfo.start + 1) + " to " + datatableInfo.end + " of " + filteredRowCount + " rows");
    
  3. 监听筛选事件自动更新
    为了在用户触发筛选(比如输入搜索框、选择筛选条件)时自动更新显示信息,需要绑定search.dt事件:

    datatable.on('search.dt', function() {
      var datatableInfo = datatable.page.info();
      var filteredRowCount = datatable.rows({ search: 'applied' }).count();
      $("#data-kt-table-info").html("Showing " + (datatableInfo.start + 1) + " to " + datatableInfo.end + " of " + filteredRowCount + " rows");
    });
    

这样就能在筛选后正确显示筛选后的行数,而非原始总行数了。

内容的提问来源于stack exchange,提问作者user2506626

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:15:54