DataTables: нижний колонтитул не обновляется в зависимости от поиска - PullRequest
0 голосов
/ 29 сентября 2019

Использование таблиц данных 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 Ответ

1 голос
/ 30 сентября 2019

Необходимо указать второй аргумент selector-modifier для всех column() вызовов метода API и использовать { search:'applied' } для применения поиска при получении данных столбца. По умолчанию DataTables не применяет поиск при использовании column() метода API.

Например:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...