0

私はDatatables JQueryプラグインを使用しており、次のことをしようとしています:

350 レコードとしましょう。サイズに関係なく、レコードを 3 つの均等なバッチで (または可能な限り均等に) 取得し、それらを 3 つのテーブルで 1 ページに表示したいと考えています。ページネーションがあってはなりません。そして、1 つのテーブルで並べ替えを行い、他のテーブルでも並べ替えを実行したいと考えています。

データベース内のレコード数に基づいてテーブルを動的に生成してから、for loop. また、表示はLIMITMySQL のパラメーターによって制御されます。問題は、テーブル 2 が 51 から 100 のレコードを表示することになっている場合、これを達成することはできますが、それでもデータのサブセットとして表示されます。たとえば、「名前で並べ替える」をクリックすると、並べ替えられます割り当てられた 50 内ではなく、他の 200 レコードへの参照。

おそらくこれを行う簡単な方法はありますか?これが私が試したことです:

jQuery.getJSON( templateDir + "/includes/_shelf_record_check.php", function( データ ) { shellTotalRecords = data.total;

var recordsPerTable = 40;
var numberOfTables = Math.ceil(shelfTotalRecords / recordsPerTable);

for(var i=1; i<=numberOfTables; i++) {
    if (i == 1)
        var startRecord = 0;
    else
        var startRecord = ((i-1) * recordsPerTable);


    jQuery.getJSON( templateDir + "/includes/_records_for_shelf_table.php?startRecord="+startRecord+"&recordsPerTable="+recordsPerTable, function( recordData ) {

    var shelfTable = "shelfTable"+i;
    var HTMLTableID = 'shelf-table'+i;
        jQuery('#shelf-table-page').append("<table id='"+HTMLTableID+"' class='display dataTable shelf'>" +
            "<thead>" +
                "<tr>"+
                    "<th></th>"+
                    "<th>Order</th>"+
                    "<th>First Name</th>"+
                    "<th>Last Name</th>"+
                    "<th>Shelf</th>"+
                    "<th>Status</th>"+
                "</tr>"+
            "</thead>"+
            "<tbody>"+
                "<tr>"+
                    "<td colspan='4' class='dataTables_empty'>Loading data from server</td>"+
                "</tr>" +
            "</tbody>"+
            "<tfoot>"+
                "<tr>"+
                    "<th></th>"+
                    "<th>Order</th>"+
                    "<th>First Name</th>"+
                    "<th>Last Name</th>"+
                    "<th>Shelf</th>"+
                    "<th>Status</th>"+
                "</tr>"+
                "</tfoot>"  +   
        "</table>");


     /* DataTable for the Shelf Table Page */
      shelfTable = jQuery('#'+HTMLTableID).dataTable( {
         "bPaginate": false,  
         "iDisplayLength": recordsPerTable,
         "iDisplayStart": startRecord,
                 "bProcessing": true,
             "bServerSide": true,
         "bDestroy": true,
         "bJQueryUI": true,
         "bFilter": false,
         "bAutoWidth": false,
         "oLanguage": {
          "sInfoFiltered": " (_MAX_ total records)"
          },
         "bLengthChange": false,
             "sAjaxSource": templateDir + "/includes/_get_shelf_table.php?recordIds="+recordData.recordIds,
         "aaSorting": [[ 3, "asc" ]],
          "aoColumns": [     
            { "sName": "id", "bVisible": false },
            { "sName": "order_number"},
            { "sName": "first_name"},
            { "sName": "last_name"},
            { "sName": "shelf" },
            { "sName": "status_id" }
         ]

      });
   });
}
4

2 に答える 2

0

「fnServerParams」パラメーターを使用してこれを解決したと思います。これにより、データをAjaxソースに渡してさらにフィルタリングできます

于 2013-10-16T01:29:10.757 に答える