数据表:页脚不会根据搜索而更新

时间:2019-09-29 19:05:02

标签: jquery datatables

使用JQuery数据表,特别是下面的函数来对特定列中的总数求和

footerCallback: function ( row, data, start, end, display ) {
    var api = this.api();
    // Remove the formatting to get integer data for summation
    var intVal = function ( i ) {

        return typeof i === 'string' ?
            i.replace(/[\$,]/g, '')*1 :
            typeof i === 'number' ?
                i : 0;

    };
    var i;
    for (i = 27; i <=122; i++) { 
        if (api.column(i).data().length){
            var total = api.column( i ).data().reduce( function (a, b) {
                return intVal(a) + intVal(b);
                }) 
            }
        else { 
            total = 0
        };

        // Update footer
        $( api.column(i).footer() ).html(total);
    }
},

到目前为止一切顺利,总计显示。

但是,当我搜索带有table.columns(12).search('No',true,false).draw();之类的列时,页脚不会更新。

我读了https://datatables.net/forums/discussion/41651/should-footercallback-be-called-when-clearing-a-search-filter,它说被调用draw(),它应该得到更新,但它没有更新

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您需要为所有selector-modifier API方法调用指定第二个参数column(),并在检索列数据时使用{ search:'applied' }应用搜索。默认情况下,使用column() API方法时,DataTables不应用搜索。

例如:

var data = api.column(i, { search:'applied' }).data();
if (data.length){
    var total = data.reduce( function (a, b) {
        return intVal(a) + intVal(b);
    });
} else { 
    total = 0;
}