Подтвердить что ты не робот

Таблицы данных изменяют количество кнопок разбиения на страницы

По умолчанию плагин DataTables показывает 7 пейджинговых кнопок (включая эллипсы), например

Previous 1 2 3 4 5 ... 10 Next

Я хотел бы иметь возможность изменить это на меньшее число, например

Previous 1 ... 10 Next

и я не могу найти его нигде в документации.

Я нашел этот плагин, но он говорит, что устарел и что

В DataTables 1.10 встроена эта возможность.

но он не показывает, где это изменить.

4b9b3361

Ответ 1

Наконец-то я нашел его после того, как поиграл с DataTable javascript-объектом и исходным кодом DataTables.

Вы должны добавить эту строку (до или после инициализации):

$.fn.DataTable.ext.pager.numbers_length = 3;

Примечание, которое будет отображаться как

Previous 1 ... 10 Next

а не

Previous 1 2 ... 10 Next

поэтому включить эллипсы в номере длины.

Edit:

Я видел некоторые проблемы с этим решением при продвижении по страницам.

Мне пришлось переписать их функцию _numbers следующим образом:

function _numbers(page, pages) {
    var
        numbers = [],
        buttons = 5, // added here the number of buttons
        half = Math.floor(buttons / 2);

    if(pages <= buttons) {
        numbers = _range(0, pages);
    } else if(page <= half) {
        numbers = _range(0, buttons - 2);

        numbers.push("ellipsis");
        numbers.push(pages - 1);
    } else if(page >= pages - 1 - half) {
        numbers = _range(pages - (buttons - 2), pages);

        numbers.splice(0, 0, "ellipsis");
        numbers.splice(0, 0, 0);
    } else {
        numbers.push(page); // changed this from _range(page - 1, page + 2);
        numbers.push("ellipsis");
        numbers.push(pages - 1);
        numbers.splice(0, 0, "ellipsis");
        numbers.splice(0, 0, 0);
    }

    numbers.DT_el = "span";

    return numbers;
}

И использовал это, чтобы указать DataTables на мою собственную функцию:

$.fn.DataTable.ext.pager.simple_numbers = function(page, pages) {
    return ["previous", _numbers(page, pages), "next"];
};

Кроме того, мне пришлось скопировать их функцию _range в файл main.js.

Ответ 2

очевидно, что идеальный минимум для DataTableJS:

$.fn.DataTable.ext.pager.numbers_length = 5;