jquery 数据表 column.data 未定义

jquery datatables column.data undefined

我正在使用数据表的行分组功能,这是我的 drawcallback 函数:

oTable = jQuery_1_11('#example').dataTable({
"searching": false,
"processing": true,
"serverSide": true,
"iDisplayLength": 20,
"sPaginationType": "full_numbers",
"language": {"infoFiltered": ""},
columnDefs: [{
        targets: 0,
        "visible": false,
    }],
"ajax": {
    "url": "index.php?entryPoint=getTableData",
    "dataType": 'json',
    "pages": "5",
    "type": "POST",
    "data": function(d) {
        d.dbJson = sendJson
    },
    "dataSrc": function(response) {
        return response.aaData;

    }
},
"drawCallback": function(  ) {

    var api = this.api();
    var rows = api.rows({page: 'current'}).nodes();
    var last = null;
    api.column(0, {page: 'current'}).data().each(function(group, i) {
        if (last !== group) {
            jQuery_1_11(rows).eq(i).before(
                    '<tr class="group"><td colspan="5">' + group + '</td></tr>'
                    );
            last = group;
        }
    });
}

})

我不知道它卡住了。

api.column(0, {page: 'current'}).data().each(function(group, i) {

这是报错:

Uncaught TypeError: Cannot read property 'each' of undefined

请帮忙!

drawCallback 在 ajax 调用返回之前被调用。它在第一个 table 初始化事件和 ajax 回调中被调用。 如果您在操作 .data() 值之前插入类型检查,它不会在第一次绘制事件时崩溃,它会在 ajax 回调中 运行。

    function(  ) {

    var api = this.api();
    var rows = api.rows({page: 'current'}).nodes();
    var last = null;
    if(typeof api.column(0, {page: 'current'}).data() !=="undefined"){
       api.column(0, {page: 'current'}).data().each(function(group, i) {
           if (last !== group) {
               jQuery_1_11(rows).eq(i).before(
                    '<tr class="group"><td colspan="5">' + group + '</td></tr>'
                    );
               last = group;
        }
    });
  }
}

希望对您有所帮助:)

这通过更改为最新版本的 DataTables 1.10.6 来实现。 以前我使用的是 DataTables 1.10.6-dev

在 jquery.dataTables.js 文件中,您可以检查当前使用的第一行。

并通过改变

jQuery_1_11('#example').dataTable

jQuery_1_11('#example').DataTable

感谢大家的帮助:)