2017-03-25 9 views
0

データを表示するためにjquery datatableを使用しています。私はページング機能をカスタマイズします。たとえば、各ページには10レコードがあります。最初に私の関数は10レコードを取る。ユーザーが次のボタンをクリックすると、私の関数は10個以上のレコードを取ります。ユーザーが '前'ボタンをクリックすると、私の機能は最後のページを保存します。ユーザーが '次へ'ボタンをクリックすると、同じレコードが再度プルされないためです。既存のレコードが表示されます。したがって、同じレコードは発生しません。しかし、ユーザーが決して戻るボタンをクリックしなかった場合。たとえば、3ページ目で、ユーザーがcoloumnをソートして、最後のページ番号を保存せずに最初のページを表示した場合。そのため、ユーザーが次のボタンをクリックすると、同じレコードがもう一度フェッチされます。そして、同じレコードがテーブルに示されます。だから私はjqueryテーブルでcoloumnをソートした後に最後のページ番号を保存する必要があります。解決策を見つけるためにこの問題を調べました。私はcoloumnは(最初のページを表示するために)ソートした後、最後のページ番号を保存することができますどのようにJquery Datatableで列をソートした後の最後のページ番号を保存

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

:私は以下のようにのような解決策を見つけます。そして、どのように私はサーバーからデータをフェッチするときに使用する変数にこの最後のページ番号を格納することができます。

答えて

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']; 

?> 
関連する問題