Пейджер DataTables, показывающий одну страницу, когда их много - PullRequest
0 голосов
/ 17 марта 2020

У меня есть проблема, которая была изначально изложена в этом вопросе . Я думал, что это работает, но не так.

Я использую таблицы данных v1.10.19 с jQuery 3.3.1 и Bootstrap 3.3.7

Теперь моя проблема в том, что независимо от того, сколько страниц данных у меня есть, пейджер показывает одну кнопку подкачки (как если бы все данные помещались на 1 странице, а когда нет).

Мой объект конфигурации выглядит следующим образом:

        {
            "processing": true,
            "serverSide": true,
            "ajax": {
                url: url,
                type: ajax.requestPOST
            },
            "order": [[1, "asc"]],
            "lengthMenu": [[-1, 500, 1000, 2500, 5000], ["All", 500, 1000, 2500, 5000]],
            "columns": eventsSvr.grid.columns,
            "columnDefs": eventsSvr.grid.columnDefs,
            "language": $.extend({}, appDt.loadingSpinner, appDt.lengthMenuText),
            dom: 'ltp'
        }

Моя обратная полезная нагрузка выглядит следующим образом:

{
    "draw": 4,
    "recordsTotal": 3727,
    "recordsFiltered": 500,
    "data": [ big data array here ]
}

Как видно, данные имеют более 3700 строк.
Размер страницы равен 500.
Тем не менее, сетка только 1 страница Он имеет 500 строк, и на пейджере нет кнопок для перехода на любые последующие страницы.

Таким образом, пользователь может просматривать только первые 500 записей.

Есть идеи о том, что происходит с пейджером?

1 Ответ

0 голосов
/ 12 апреля 2020

DataTables рассчитывает количество страниц на основе recordsFiltered и размера вашей страницы. Он содержит общее количество записей после применения фильтрации.

Когда поиск выполнен, recordsFiltered может быть не равен recordsTotal.

Ваш обработчик на стороне сервера должен вычислять общее число записей без применения критериев поиска и возвращает его в recordsTotal, а затем вычисляет общее количество записей после применения критериев поиска и возвращает его в recordsFiltered.

Это позволяет DataTables отображать в разделе информации следующее сообщение:

Отображение от 1 до 10 из recordsFiltered записей (отфильтровано из recordsTotal всего записей)

Подробнее о правильном формате возвращаемых данных можно узнать подробнее. в режиме обработки на стороне сервера в официальной документации .

...