jQueryUI数据表设置记录总计

时间:2019-06-03 19:20:12

标签: jquery jquery-ui datatables

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

我构建的内容有点类似于延迟加载,即在表中加载初始数据块(目前价值5页。)然后,一旦加载,它就会执行一堆后台ajax调用来加载剩余的数据。这使表可以非常快速地被加载和响应,同时还可以加快客户端的排序和筛选的速度。但是,发生的情况是,记录计数将开始显示“ 50”,然后在ajax调用结束时将跳转到300、600等,并且类似地,页面选择器将显示5,然后30等。

我以ajax响应(与服务器端处理相同的方式)返回recordsTotal,并使用它来确定要进行多少个块/后台ajax请求。但是,我找不到在表上设置的设置或功能来覆盖总记录数。我希望避免重新绘制html,因为它感觉有些断断续续,并且希望后台加载对于最终用户来说更不可见。

这可能吗? 谢谢!

1 个答案:

答案 0 :(得分: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>