如何在 jQuery DataTable 分页中显示所有页码

Ghi*_*taB 4 jquery jquery-plugins datatables

如何在 jQuery 数据表分页中显示所有页码?例如,而不是1 2 3 ... 10,我想要1 2 3 4 5 6 7 8 9 10

我现在的代码是这样的:

$('.paginated-table').dataTable({
  "lengthMenu": [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]],
  "ordering": false,
  "info":     false,
  "bFilter": false,
  "sDom": "t<'row'<'col-md-12'p>>",
  "oLanguage": {
    "oPaginate": {
      "sNext": "",
      "sPrevious": "",
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

Ion*_*zău 5

计算页面按钮的逻辑如下

var extPagination = DataTable.ext.pager;

function _numbers ( page, pages ) {
    var
        numbers = [],
        buttons = extPagination.numbers_length,
        half = Math.floor( buttons / 2 ),
        i = 1;

    if ( pages <= buttons ) {
        numbers = _range( 0, pages );
    }
    ...

    numbers.DT_el = 'span';
    return numbers;
}
Run Code Online (Sandbox Code Playgroud)

因此,您可以将该numbers_length属性修改为更大的值(默认为7),省略号将消失,显示所有页码:

$.fn.dataTableExt.pager.numbers_length = 600;
Run Code Online (Sandbox Code Playgroud)

var extPagination = DataTable.ext.pager;

function _numbers ( page, pages ) {
    var
        numbers = [],
        buttons = extPagination.numbers_length,
        half = Math.floor( buttons / 2 ),
        i = 1;

    if ( pages <= buttons ) {
        numbers = _range( 0, pages );
    }
    ...

    numbers.DT_el = 'span';
    return numbers;
}
Run Code Online (Sandbox Code Playgroud)
$.fn.dataTableExt.pager.numbers_length = 600;
Run Code Online (Sandbox Code Playgroud)
for (var i = 0; i < 500; ++i) {
  $("tbody").append("<tr><td>" + i + "</td><td>" + Math.random() + "</td></tr>");
}

$.fn.dataTableExt.pager.numbers_length = 600;

$("table").dataTable({
  ordering: false,
  info: false,
  bFilter: false,
  extPagination: {
    numbers_length: 600
  }
});
Run Code Online (Sandbox Code Playgroud)