基于this问题。
我用以下代码初始化datatables.js表:
var table_entity = $('#myTable').DataTable({
"pageLength":getParameterByName('pageLength'),//getting param from query string
fixedHeader: true,
"ajax": {
"url": myUrl,
"data": function(d) {
d.type = $('#mytype').val();
}
}
});
所以我知道如何用不同的ajax参数重新加载我的数据表。现在,我需要使用不同的pageLength
参数重新加载它,该参数不属于ajax节,而是在数据表init
阶段记录的。我尝试在重新加载过程中使用以下代码直接传递它:
table_entity.ajax.reload({
"pageLength":77 //some new param different from the initial one
});
但是它不起作用,该表被重新加载了初始pageLength
值。任何想法如何解决它都将受到欢迎。谢谢。
UPD_1
设法做到
第一个:完全破坏一个表:
$('#MyTable').DataTable().destroy();
$('#MyTable tbody').empty();//note tbody here
2nd:使用更新的参数重新初始化表:
table_data.displayStart = Number(getParameterByName('displayStart'));
table_data.pageLength = Number(getParameterByName('pageLength'));
table_data.iDisplayStart = Number(getParameterByName('displayStart'));
table_data.iDisplayLength = Number(getParameterByName('pageLength'));
$('#MyTable').DataTable(table_data);
请注意2个参数-iDisplayStart
和iDisplayLength
在这里
是否可以在ajax.reload
阶段执行相同操作而不破坏表?谢谢。
答案 0 :(得分:1)
是否可以在不破坏表的情况下执行相同的操作,但是 在ajax.reload阶段?
您可以加入xhr.dt
事件并从那里更新page.len()
。示例:
$('#example').on('xhr.dt', function(e, settings, json, xhr) {
table.page.len(json.data.length).draw()
})
将动态设置页面长度为最大长度,即data
的长度。演示-> http://jsfiddle.net/d72zbyus/
因此您可以使用table.page.len(77).draw()
或其他任何方法。在每个AJAX请求之后触发xhr.dt
。
我不清楚您的新pageLength
的确切来源。如果它是返回的JSON的一部分(我怀疑是这样),则可以执行table.page.len(json.pageLength).draw()
。