我正在使用http://www.datatables.net版本1.9.4。 排序后我想保留当前页面,但默认行为会将我重定向到第一页。有人知道快速解决方案吗?
由于
答案 0 :(得分:1)
有一个州保存选项。见this link
$(document).ready(function() {
$('#example').dataTable( {
stateSave: true
} );
} );
答案 1 :(得分:0)
使用"bStateSave": true
代替Pexsol提到的stateSave: true
。
答案 2 :(得分:0)
stateSave
选项无法解决此问题,因为该选项仅处理页面刷新,而不处理更改。这样的事情可以解决问题。
var page = 0;
var table = $('#example').DataTable();
table.on('order', function() {
if (table.page() !== page) {
table.page(page).draw('page');
}
});
table.on('page', function() {
page = table.page();
});
请参见小提琴here。
答案 3 :(得分:0)
我知道我来晚了,但最近我遇到了同样的问题,也许我的解决方案可能会对某人有所帮助。
DataTable不提供此功能,因为对所有数据进行排序后,由于可见数据将不再重要,因此您将被重定向到第一页。但是由于客户的要求,我只能对可见数据执行排序。
首先,您需要禁用表的标题单击事件
var table = $('#example').DataTable();
table.columns().every( function () {
var cell = $(this.header());
cell.off( 'click');
});
然后将click事件添加到要排序的每个列,并调用以列索引为参数的自定义sortTable(n)
。
<th onclick="sortTable(0)">First Name</th>
<th onclick="sortTable(1)">Last Name</th>
function sortTable(n) {
if (dir == "asc") {
table.order([[ n , 'asc' ]].draw(false);
dir = "desc";
}
else if (dir == "desc") {
table.order([[ n , 'desc' ]].draw(false);
dir = "asc";
}
}
您还需要全局初始化dir
变量并将其设置为默认方向asc/desc
。