我有一个带有
"iDisplayLength":-1
(所有记录)的jquery DataTable,在第一次加载时用户将看到所有记录。
该表每分钟刷新一次(每次刷新都会初始化表 - 也许这不是最好的?)。
function initEventsTable() {
self.$eventTable = $("#events_table");
if (self.$eventTable != undefined) {
self.oTable = self.$eventTable.DataTable({
"scrollX": true,
"aLengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],
// Set the initial value
"iDisplayLength":-1,
"sPaginationType": "bootstrap",
"oLanguage": {
"sLengthMenu": "_MENU_ records",
"oPaginate": {
"sPrevious": "Prev",
"sNext": "Next"
}
},
aaSorting: [[8, 'desc'], [5, 'asc']],
bSortable: true,
});
}
用户可以更改行数(例如 10 行):
$('[name="events_table_length"]').on('change', function () {
eventsTableLength = $(this).val();
});
表格刷新后(
initEventsTable()
)我使用下面的代码来更改长度:
var oSettings = self.oTable.fnSettings();
if (oSettings != null)
{
$('select[name^="events_table_length"] option:selected').attr("selected", null);
$('select[name^="events_table_length"] option[value=' + eventsTableLength + ']').attr("selected", "selected");
oSettings._iDisplayLength = eventsTableLength;
self.oTable.fnDraw();
}
问题出在分页上,刷新后,当我点击第 2 页时,例如所有记录都会出现,而不仅仅是 10 条。
我想出了这个:
$('select[name^="events_table_length"]').change();
我不再关注表格,而是关注长度的下拉列表。 我添加了一个
change()
,这就产生了魔力。