我使用datatables.js创建报告表。在我的报告页面中有一些过滤器。应用任何过滤器时,我的服务返回具有不同列数的数据。因此,我正在摧毁和重建桌子。但是出现了一个错误,例如无法获得属性'样式'未定义或空引用。
var htmlTable = "<table class='display responsive no-wrap cell-border compact' style='margin: 0 !important' width='100%' id='policyTable'>" +
"<thead>" +
"<tr class='cell-border custom-header-footer tableHeaders' id='tableHeaders'>" +
"<th>Policy Details</th>" +
"</tr>" +
"</thead>" +
"</table>";
function InitAndLoadTableData(tableData, tableId, exportTitle) {
if ($.fn.DataTable.fnIsDataTable("#" + tableId)) {
var oldTable = $("#" + tableId).DataTable();
oldTable.destroy(true);
$("#divFor_" + tableId).append(htmlTable);
}
var table = $('#' + tableId)
.DataTable({
data: tableData,
dom: "<'row' <'col-md-12'B>><'table-scrollable't><'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>",
"searching": false,
"paging": false,
"info": false,
"ordering": false,
//destroy: true,
responsive: true,
processing: false,
columns: tableColumns,
buttons: [
{ extend: 'copy', className: 'btn red btn-outline', title: exportTitle },
{ extend: 'pdf', className: 'btn green btn-outline', title: exportTitle },
{ extend: 'excel', className: 'btn yellow btn-outline', title: exportTitle },
{ extend: 'csv', className: 'btn purple btn-outline', title: exportTitle }
]
});
table.buttons().container().appendTo($('.col-md-12:eq(0)', table.table().container()));
}
答案 0 :(得分:0)
请你试试这个...
$(&#39; #example&#39;)。DataTable({ 毁灭:真的, //你要执行的所有其他东西 });
答案 1 :(得分:0)
我遇到了同样的问题-目的与列是动态的相同。
我终于不得不使用以下代码:
let table = $("#table-id").DataTable();
table.clear();
table.destroy();
// Once you know the columns, recreate by calling DataTable initializer
// Another important part - I do remove and recreate <th> based on received columns
// or we get a weird 'style' error because of mismatch between data and table columns.
table.clear()
调用是丢失的部分-没有它,则不会删除现有的HTML。在DataTable构造函数中传递destroy: true
是没有用的,而table.destroy可以达到目的。