我的页面中有一个jquery datatable,我用下面这样的数据填充它:
$(document).ready(function () {
var datatable;
$(document).on("click", ".myBtnClass", function () {
if (datatable != null)
datatable.destroy();
datatable = $('#tableProducts').DataTable({
"pageLength": 50,
"processing": false,
"serverSide": true,
"filter": true,
"bLengthChange": false,
"bSort": false,
"orderMulti": false,
"ajax": {
"url": "/Bulk/LoadData/",
"type": "POST",
"data": {
"username": $(".sellerInput").val(),
"drange": $(".select2").val()
},
"dataSrc": function (data) {
return data.data;
}
}
});
});
});
正如您在这里看到的,我正在用我的方法返回"LoadData“的数据填充数据表……
这里的问题在这一行中:
if (datatable != null)
datatable.destroy();
每次我为了用新数据重新创建表而销毁它时,我就失去了表的设计,在销毁/重新创建之后,它就会变形,看起来很难看……
是否有其他方法可以将数据重新加载到表中,而无需实际调用destroy()方法?
发布于 2017-06-10 04:52:35
您可以尝试两种不同的方法:
1.销毁/重新实例化表
在表的初始化中添加选项destroy:true
,然后删除
if (datatable != null)
datatable.destroy();
这将告诉datatables在现有实例上调用初始化函数时销毁并重新实例化该表。
但是,这仍然可能会搞乱表的设计。
2.使用ajax.reload()
另一种可能更可取的方法是使用ajax选项中提供的url重新加载数据:
$('#tableProducts').DataTable().ajax.reload();
Here's有关ajax.reload()
功能的更多信息。
https://stackoverflow.com/questions/44354944
复制相似问题