如何在使用jquery / datatables排序后保留当前页面?

时间:2014-05-12 11:36:31

标签: jquery sorting datatables jquery-datatables

我正在使用http://www.datatables.net版本1.9.4。 排序后我想保留当前页面,但默认行为会将我重定向到第一页。有人知道快速解决方案吗?

由于

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