使用客户端处理时是否可以手动设置recordsTotal属性?
我构建的内容有点类似于延迟加载,即在表中加载初始数据块(目前价值5页。)然后,一旦加载,它就会执行一堆后台ajax调用来加载剩余的数据。这使表可以非常快速地被加载和响应,同时还可以加快客户端的排序和筛选的速度。但是,发生的情况是,记录计数将开始显示“ 50”,然后在ajax调用结束时将跳转到300、600等,并且类似地,页面选择器将显示5,然后30等。
我以ajax响应(与服务器端处理相同的方式)返回recordsTotal,并使用它来确定要进行多少个块/后台ajax请求。但是,我找不到在表上设置的设置或功能来覆盖总记录数。我希望避免重新绘制html,因为它感觉有些断断续续,并且希望后台加载对于最终用户来说更不可见。
这可能吗? 谢谢!
答案 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>