2016-06-24 3 views
1

ich eine Tabelle erstellt habenJQuery Datentabelle zeigt nicht die Datensätze über 500 Einträge

<table id="test" class="table table-striped"></table> 

Jetzt möchte ich nicht serverseitige Verarbeitung verwenden. Also habe ich dieses Client-Skript unter

$.ajax({ 
      type: "POST", 
      url:"http://URL/demo", 
      data:{ 
      codeType : '10' 
      },success:function(data1){ 
      var dt = []; 
      $.each(data1,function(i,v) { 
       dt.push([data1[i].id,data1[i].id1,data1[i].id2,data1[i].id3,data1[i].id4,data1[i].id5]); 
      }); 
      var table = $('#test').DataTable({ 
      "data": dt, 
      "bProcessing": true, 
      "aoColumns": [ 
       {"title":"ID", visible:false}, 
       {"title":"ID1"}, 
       {"title":"ID2"}, 
       {"title":"ID3"}, 
       {"title":"ID4"}, 
       {"title":"ID5"} 
      ] 
      }); 
      } 
     }); 

Ich konnte die richtigen Daten in dieser Tabelle erhalten. Aber ich habe 14000 Datensätze in der Datenbank, aber diese Tabelle zeigt nur 500 Einträge. Warum? Wie kann ich alle Datensätze in der Tabelle anzeigen?

+1

14000 Datensätze behandelt clientseitige ist eine Menge Arbeit für den Browser, was zu einer sichtbaren Verlangsamung der Benutzererfahrung. Warum nicht ServerSide? – Yuri

Antwort

1

Eine wilde Vermutung, Ihre $.each() Schleife an der Zeit, die Sie nicht die DataTable Initialisierung beendet eine promise Verwenden Sie die Initialisierung nur when() die Schleife beendet ist, um sicherzustellen, (?):

$.when( 
    $.each(data1,function(i,v) { 
    dt.push([data1[i].id,data1[i].id1,data1[i].id2,data1[i].id3,data1[i].id4,data1[i].id5]); 
    }) 
).then(function() { 
    table = $('#test').DataTable({ 
    "data": dt, 
    "bProcessing": true, 
    ... 
    }) 
}) 

wird dafür sorgen, dies, dass Die dataTable wird instanziiert, wenn und nur wenn $.each abgeschlossen ist, unabhängig von 1 Zeile, 14.000 Zeilen oder nie, wenn der Browser abstürzt :)

Verwandte Themen