2017-02-17 11 views
0

Ich habe eine jquery Datentabelle, die paginiert werden muss. Ich habe das Ereignis page-dt verwendet, um eine Funktion auszulösen, um Daten von der Serverseite zu laden, wenn auf eine Seitennummer geklickt wird. Dann habe ich $('#table').dataTable().fnAddData(recordsArray); verwendet, um neu abgerufene Daten an die Tabelle anzufügen. Dies geschieht erfolgreich. Mein Problem ist, obwohl Daten an die Tabelle angehängt werden, bleibt sie trotz des Klickereignisses auf der ersten Seite. Ich versuchte mit table.rows.add(recordsArray).draw(); und fnDrawCallback Ereignis, aber hatte immer noch keinen Erfolg.Datatable - Wechsel auf die angeklickte Seite nach dem Rückruf

 $(document).ready(function() { 
      table = $('#table').DataTable({ 
       "filter": true, 
       "paging":true, 
       "pagingType": "full_numbers", 
       "pageLength": 5, 
       scrollCollapse: true, 
       scrollY:'70vh', 
       "dom": '<"dataTablesTop"' + 
       'f' + 
       '<"dataTables_toolbar">' + 
       '>' + 
       'rt' + 
       '<"dataTablesBottom"' + 
       'lip' + 
       '>', 
       "info":true 
      }); 
     $('#table').on('page.dt', function (e, settings) { 
      // console.log(JSON.stringify(settings)); 
      update(settings); 
     }); 
     }); 

Dies ist die update() Methode.

update = function(data) { 
     alert(data); 
     var displayStart = data._iDisplayStart; 
     var displayLength = data._iDisplayLength; 
     var records = data.aiDisplay.length; 
     if(displayStart != 0) { 
      var data = getProviderData(displayStart, displayLength, records, true); 
      for(var i = 0; i < data.length; i++) { 
       no = no + 1; 
       data[i].no = no; 
       try { 
        var json = data[i].jsonBody.replace(/\\n/g, "") 
         .replace(/\\'/g, "\\'") 
         .replace(/\\"/g, '\\"') 
         .replace(/\\&/g, "\\&") 
         .replace(/\\r/g, "\\r") 
         .replace(/\\t/g, "\\t") 
         .replace(/\\b/g, "\\b") 
         .replace("%", "") 
         .replace(/\\f/g, "\\f"); 

        data[i].jsonContent = JsonHuman.format(JSON.parse(json)).outerHTML; 
       } 
       catch (e) { 
        data[i].jsonContent = data[i].jsonBody; 
       } 
      } 

      var recordsArray = []; 
      for(var j = 0; j < data.length; j++) { 
       var temp = []; 
       temp.push(data[j].no); 
       temp.push(data[j].responseTime); 
       temp.push(data[j].api); 
       temp.push(data[j].jsonContent); 
       recordsArray.push(temp); 
      } 
      // table.rows.add(recordsArray).draw(); 
      $('#table').dataTable().fnAddData(recordsArray); 
     } 
     // drawGadget(); 
     // wso2gadgets.update(data,"append"); 
return; 
    }; 

Please see the screenshot

Schätzen irgendwelche Eingaben auf diesem.

Vielen Dank im Voraus!

+0

von dem, was ich erinnere, hatte datables eine Option, wo Sie automatisch die Daten auf datable newpage ajaxieren können – madalinivascu

+0

https://datatables.net/examples/data_sources/server_side.html – madalinivascu

+0

Dies ist nicht wirklich für die neue Seite. Angenommen, ich habe anfangs 2-3 Seiten geladen. Wenn ich dann auf die zweite Seite klicke, müssen die Daten für die 4. Seite geladen und auf die zweite Seite verschoben werden. – Marlio

Antwort

0

Ich habe das einfach gemacht, indem Sie table.rows.add(recordsArray).draw(); zu table.rows.add(recordsArray).draw(false); machen.

+1

Schön! Hier ist der Link zu den [function's docs] (https://datatables.net/reference/api/draw%28%29) falls jemand mehr wissen möchte. – Sebastianb

Verwandte Themen