在Jquery数据表中对列进行排序后保存最后一页编号

时间:2017-03-25 15:10:15

标签: javascript jquery datatables columnsorting

我正在使用jquery数据表来显示数据。我自定义分页功能。例如,每个页面有10条记录。首先我的功能需要10条记录。如果用户单击下一步按钮,则我的功能将超过10条记录。如果用户点击了之前的'按钮,然后我的功能保存最后一页。因为如果用户点击下一步'按钮然后相同的记录不再拉。显示现有记录。因此,相同的记录不会发生。但如果用户从未点击后退按钮。例如,在第3页,如果用户排序coloumn然后表显示第一页没有保存最后页码。因此,如果用户单击下一步按钮,则会再次获取相同的记录。同样的记录将在桌面上显示。所以我必须在jquery表中排序coloumn之后保存最后的页码。我搜索了这个问题以找到解决方案。我找到的解决方案如下:

$('#example').dataTable( {
  stateSave: true
} );

如何在coloumn排序后保存最后的页码(因为显示第一页)。如何在变量上存储最后一个页码,以便在我从服务器获取数据时使用。

1 个答案:

答案 0 :(得分:0)

以下示例将当前页面和上一页码添加到发送到您服务器的请求参数中。

$(document).ready(function() {    
    //vars        
    var previousPage = null;

    // DataTable
    var table = $('#example').DataTable( {
        "serverSide": true,
        "ajax": {
            "url": "yourAjaxDataSource.url",
            "type": "POST",
            "data": function ( dtData ) {
                        var info = $('#example').DataTable().page.info();
                        var currentPage = info.page + 1;        
                        var customData = $.extend( {}, dtData, {
                                            "currentPage": currentPage,
                                            "previousPage ": previousPage 
                                          } );
                        return  customData;
                    }
        },
        "columns": [
            {//1st Column: 
                "data": "foo" },
            {//2nd Column: 
                "data": "bar" }
        ],

        //this will always be called after the table is drawn
        "drawCallback": function( settings ) {
            var info = $('#example').DataTable().page.info();
            previousPage = info.page + 1;
        }
    } );
} );

在服务器端,如果您使用的是PHP,则可以访问您添加的新请求参数,如下所示:

<?php

$currentPage = $_POST['currentPage'];
$previousPage = $_POST['previousPage'];

?>