数据表破坏功能错误

时间:2017-03-18 13:31:01

标签: javascript datatables

我使用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()));         

    }

2 个答案:

答案 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可以达到目的。