2016-07-20 4 views
1

Привет, я использую таблицу данных jquery 1.9.4 для таблиц обработки на стороне популяции. Данные загружаются правильно. но разбиение на страницы не работает должным образом. На самом деле она имеет более чем 30 строк и следующие, предыдущие и номера страниц не работает enter image description herejQuery datatable pagination не показывает количество страниц

var sTableAllCustomers = $('#tblAllCustomers').dataTable({ 
       "bDestroy": true, 
       "bProcessing": true, 
       "bServerSide" : true, 
       "bLenthChange" : false, 
       "iDisplayLength": 5, 
       "aLengthMenu": [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]], 
       "sPaginationType" : "full_numbers", 
       "sAjaxSource" : "loadAllCustomers", 
       "oLanguage" : { 
        "sSearch" : "Search By Email ID:" 
       }, 
       "aoColumns" : [ 
       {"sTitle" : "No.","mData" : null,"aTargets": [ 0 ], 
        "fnRender" : function(obj) { 
         var columnIndex = obj.oSettings._iDisplayStart + obj.iDataRow+1 
         return columnIndex; 
        } 
       }, 
       {"sTitle" : "Email ID","mData" : "email", "bSearchable" : true}, 
       {"sTitle" : "Devices","mData" : "device", "bSearchable" : false}, 
       {"sTitle" : "App Edition","mData" : "edition", "bSearchable" : false}, 
       {"sTitle" : "Account Type","mData" : "accountType", "bSearchable" : false}, 
       {"sTitle" : "Activated Date","mData" : "activatedDate", "bSearchable" : false}, 
       {"mData" : "id", "bSearchable": false, 
        "mRender": function (data, type, full) { 
         return '<a id="'+data+'" datakey="'+full['key']+'" class="btnViewMoreInAllCustomers btn tooltipped more color-sec" data-tooltip="More" data-position="left"> <i class="mdi-notification-more"></i></a>'; 
         } 
       } 
       ], 
        "fnServerData" : function(sSource, aoData, fnCallback) { 
        $.ajax({ 
        "dataType" : 'json', 
        "type" : "GET", 
        "url" : sSource, 
        "data" : aoData, 
        "success" : fnCallback 
        }); 
        }, 
      }); 

сторона сервера код

int totalListSize = modals != null ? modals.size() : 0; 
     CustomerDataTableObject dataTableObject = new CustomerDataTableObject(); 
     // the total data in db for datatables to calculate page no. and 
     // position 
     dataTableObject.setiTotalDisplayRecords(totalListSize); 
     // the total data in db for datatables to calculate page no. 
     dataTableObject.setiTotalRecords(totalListSize); 
     dataTableObject.setsEcho(Integer.parseInt(request.getParameter("sEcho"))); 
     dataTableObject.setAaData(modals); 
     Gson gson = new Gson(); 
     String json = gson.toJson(dataTableObject); 

ответ

1

Вы инициализирующая два параметра iTotalRecords и iTotalDisplayRecords с одинаковым значением хранится в переменной totalListSize. Однако переменная totalListSize содержит количество возвращенных записей, но должно содержать общее количество записей в базе данных.

От documentation:

iTotalRecords

Всего записей, до фильтрации (т.е. общее количество записей в базе данных)

iTotalDisplayRecords

Всего записей, после фильтрации (т.е. было применено общее количество записей после фильтрации, а не только количество записей, возвращаемых в этот результирующий набор)

Вам необходимо рассчитать общее количество записей в базе данных по отдельности и присвоить его iTotalRecords и iTotalDisplayRecords.

Например, если у вас есть 30 записи и только 5 могут отображаться на одной странице, ваш ответ должен быть что-то вроде:

{ 

    "sEcho": 1, 
    "iTotalRecords": 30, 
    "iTotalDisplayRecords": 30, 
    "aaData": [ 
     { 
      "DT_RowId": "row_8", 
      "DT_RowClass": "gradeA", 
      "0": "Gecko", 
      "1": "Firefox 1.5", 
      "2": "Win 98+/OSX.2+", 
      "3": "1.8", 
      "4": "A" 
     }, 
     // ... 4 more entries ... 
    ] 
} 
+0

спасибо за вашу поддержку. Я изменил iTotalRecords с размером записи моего стола. но все еще не показывает только 1 номер страницы внизу, на самом деле у меня есть 30 записей. – boycod3