Datatables—如何在向表中添加新数据时停止服务器端绘制事件
我已经从服务器端加载了数据表,因为将有大量的数据集需要从服务器端加载Datatables—如何在向表中添加新数据时停止服务器端绘制事件,datatables,Datatables,我已经从服务器端加载了数据表,因为将有大量的数据集需要从服务器端加载 var table = $('#table').DataTable({ "processing": true, "serverSide": true, "ajax" : { "url": "...", "type": "POST" }, "columns": [ { "orderable": false, "data" : 'id',
var table = $('#table').DataTable({
"processing": true,
"serverSide": true,
"ajax" : { "url": "...", "type": "POST" },
"columns": [ {
"orderable": false,
"data" : 'id',
"render" : function( data, type, meta )
{ return '..'; }
},
{
"orderable": true,
"data" : ".."
},
{
"orderable": true,
"data" : "..",
"className": 'right-align'
},
{
"orderable": true,
"data" : "..",
"className": 'right-align'
},
{
"orderable": false,
"data" : 'id',
"defaultContent": "",
"className": 'center-align',
"render" : function(data, type, meta) {
return '..';
}
},
{
"orderable": false, // flags
"data" : {
'inserted' : 'inserted',
'deleted' : 'deleted'
},
"defaultContent": "",
"className" : 'center-align',
"render" : '..'
}
}
],
'order': [
[1, "asc"]
],
"language": {
"lengthMenu": '..'
}
}))
我必须为这个表提供过滤功能(很少有复选框会在更改时触发post请求),所以我将过滤器发送到后端,它会给我新的数据集
$.post(url, { 'filters' : data} , function(collection){
table.clear().draw();
table.rows.add(JSON.parse(collection));
table.columns.adjust().draw();
});
它总共触发了3个请求,一个是post请求,两个是draw请求(因为我画了两次)
根据服务器端的处理,表的每次绘制都会产生一个新的Ajax请求,以获取所需的数据。现在这个数据覆盖了我从过滤器中得到的数据
如何使用新数据集绘制表格?或者如何阻止服务器端ajax请求触发。
我尝试了preDrawCallback,它关闭了整个绘图功能
$('#table').dataTable( {
"preDrawCallback": function( settings ) {
return false;
}
});
您可以使用指定发送到服务器的自定义参数,请参见下面的方法之一
$('#example').DataTable({
"ajax": {
"url": "data.json",
"data": function (d){
d.example_select = $('#example-select').val();
}
}
});
ajax.data
每次DataTables从服务器请求数据时都会调用回调函数
要在过滤器更改后从服务器重新加载数据,可以使用函数,例如:
$('#example-select').on('change', function(){
$('#example').DataTable().ajax.reload();
});
有关演示,请参阅。处理(即分页、排序、搜索)是通过不同的路由完成的,而过滤是通过不同的路由完成的。因此,我确实使用了ajax.data将过滤器发送到后端,每次更改时,我都会设置ajaxurltable.ajax.url(url.load()
(它将从新url加载数据),如果选中零复选框,则我会设置回原始url@Gyrocode.com谢谢你的帮助