数据表 j查询插件设置记录初始加载后总计



我已经在互联网上搜索了这个,但似乎找不到答案......

我有一个相对复杂的查询,它从大型数据库返回 50 条记录。 此查询作为游标运行,因此速度很快,并且能够在 ~20 毫秒内组装 json 并返回到数据表。

但是,获取此查询的记录总数较慢 (500ms(。

我希望能够执行并行 ajax 调用并在数据表已经呈现后在数据表上设置 count (recordsCount(,以便我可以更快地在屏幕上查看数据。 这可能吗?

作为一种解决方法,我正在考虑为我的查询创建计数缓存,但如果当我能够获取计数时可以轻松命中一些客户端代码,这似乎并不理想。

这是我的数据表代码供参考:

var table = $('#myTable').DataTable({
"dom": '<"top"iflp<"clear">>rt<"bottom"iflp<"clear">>',
"processing": true,
"serverSide": true,
"searching": false,
"ordering": false,
"bSort": false,
"scrollX": false,
"fixedHeader": true,
"deferRender": true,
"iDisplayStart": (startPage * pageLength),
"ajax": {
"url": url,
"type": "POST",
"data": function (d) {
}
},
"pagingType": "full_numbers",
"columnDefs": columnDefs,
"responsive": false,
"columns": columnDataStructure,
"order": [[0, "desc"]],
"lengthMenu": [10,25,50,100],
"initComplete": function(settings, json){
}
})

这是一个有趣的问题。

我可以给你一个黑客的方式来做到这一点。它应该适用于数据表 1.10.x。

附加以下事件处理程序,当 DataTables 向服务器端脚本发出 Ajax 请求时将调用该处理程序。

调用另一个服务器端方法(在我的示例中/echo/json/(并检索记录总数。

然后使用一些内部未记录的函数更新数据表。

$('#example').on('xhr.dt', function ( e, settings, json, xhr ) {
$.ajax({
url: '/echo/json/',
method: 'POST',
data: { json: JSON.stringify({ recordsTotal: 999 }) },
type: 'json'
})
.done(function(json){
settings._iRecordsDisplay = json.recordsTotal;
settings._iRecordsTotal = json.recordsTotal;     
$.fn.dataTable.ext.internal._fnCallbackFire( settings, 'aoDrawCallback', 'draw', [settings] );
});
});

有关代码和演示,请参阅此示例。

最新更新