JqueryUI 数据表设置记录总数

Posted

技术标签:

【中文标题】JqueryUI 数据表设置记录总数【英文标题】:JqueryUI Datatables set recordsTotal 【发布时间】:2019-10-19 08:43:35 【问题描述】:

使用客户端处理时是否可以手动设置recordsTotal属性?

我构建的内容有点类似于延迟加载,其中表加载了初始数据块(目前有 5 页)。然后一旦加载,它会执行一堆后台 ajax 调用来加载剩余的数据。这使得表格可以非常快速地加载和响应,同时还允许客户端排序和过滤的速度。但是发生了什么,开始时记录数将显示“50”,然后随着 ajax 调用完成,它将跳转到 300、600 等,类似地,页面选择器显示 5,然后是 30 等。

我用 ajax 响应返回 recordsTotal,就像你在服务器端处理的方式一样,并使用它来确定要发出多少块/后台 ajax 请求。但是,我找不到要在表上设置的设置或函数来覆盖总记录数。我想避免重新绘制 html,因为它感觉有点不稳定,并且希望后台加载对最终用户更不可见。

这可能吗? 谢谢!

【问题讨论】:

听起来,就像您正在重新发明 DataTables server-side processing。您是否有理由不能使用现有的? 【参考方案1】:

如果可能,我会在服务器端处理中使用构建。但如果你真的想改变总记录的值,你可以覆盖fnRecordsTotal-方法。

$(document).ready(function() 
  
  $.fn.dataTable.models.oSettings.fnRecordsTotal = function ()  return 42; ;
  
  let datatable = $('#table_id').DataTable();
  
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<link href="//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet"/>

<table id="table_id" class="display">
  <thead>
    <tr>
      <th>Column 1</th>
      <th>Column 2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Row 1 Data 1: Test1</td>
      <td>Row 1 Data 2: Test2</td>
    </tr>
    <tr>
      <td>Row 2 Data 1 (Lorem)</td>
      <td>Row 2 Data 2 (Ipsum)</td>
    </tr>
  </tbody>
</table>

【讨论】:

做到了!谢谢!

以上是关于JqueryUI 数据表设置记录总数的主要内容,如果未能解决你的问题,请参考以下文章

MSSQLSERVER中如何快速获取表的记录总数

mysql之数据去重并记录总数

mysql之数据去重并记录总数

根据PHP中的ENUM值计算数据库中的记录总数

如何从控制器动态设置总记录

怎样用ASP统计查询记录的总数