2014-09-19 18 views
7

Der Server gibt 15 Datensätze pro Seite zurück, und die Gesamtzahl der Datensätze liegt über 2000. Ich möchte die ersten 15 Datensätze anzeigen und dann bei jedem Klick auf die Schaltfläche 'Weiter' die verbleibenden Datensätze anzeigen , (15 pro Seite). Dazu tun wir eine Server-Seite Paginierung oder Client-Seite ???Serverseitige Paginierung mit Datatabellen

Hier ist meine Tabelle und die Attribute für die Paginierung in Datentabellen im mit:

var tableData = self.accountCollection.getData(); 

     var tableColumns = this.accountCollection.getColumns(); 
     var totalRecs = this.accountCollection.length; 

     //create the UI grid containing the list of items 

     this.resultsTable = tableEl.dataTable({ 
      "bServerSide": true, 
      "sEcho": 3, 
      "iTotalRecords": totalRecs, 
      "iTotalDisplayRecords": 15, 
      "aaData": tableData, 
      "aoColumns": tableColumns, 
      "aaSorting": [[1,'asc']], 
      }); 



getData: function() { 

     var returnData = []; 
     $.each(this.models, function (idx, accountModel) { 
      returnData.push(accountModel.attributes); 
     }); 
     return returnData; 
    }, 

Die returnData kehrt mir ein Objekt ab, Felder hat i ia Tabelle bevölkern werden: Objekt neu abgestimmt: (grob)

Object 
accountName: "No Company" 
address1: "1234 asdf" 
    address2: "" 
    billingAcctId: null 
    billingSystem: null 
    city: "mountain view" 
    comments: null 
    country: "USA" 

die getData() Funktion dann die Daten aus dem datatbase aufgerufen wird, um unter Verwendung von RETUEN:

var tableData = this.accountCollection.getData() 

Im Grunde wird tableData die notwendigen Felder und Werte haben, die in der Tabelle angezeigt werden. Jetzt kann ich mehr als 1000 Datensätze vom Server zurückgegeben haben. Daher brauchte ich Seitenumbruch. Das in Geige ist, was ich versucht habe und hat keine Auswirkungen auf die Paginatin .. :(

Ich denke, ich habe die grundlegende Paginierung, die mit den Databases kommt, aber jetzt muss ich eine Server-Seite zu haben Erhalten Sie nur 15 Datensätze auf einmal anzuzeigen, und auf Klick auf "Next" und "Prev" Button sollte ich in der Lage sein, Ajax Anrufe zu machen, um die verbleibenden Datensätze 15 pro Seite zu bekommen ...

Ich hoffe, das hilft Ihnen Verstehen Sie besser.Bitte lassen Sie mich wissen, wenn Sie weitere Einzelheiten benötigen.

Wie kann ich Paginierung mit Datenträgern erreichen? Bitte lassen Sie mich wissen, wenn mehr Details benötigt ..

Dank

Antwort

0

Das sieht Ihre Gasse nach oben ->http://datatables.net/examples/data_sources/js_array.html Es ist rein clientseitige

Obwohl, soweit ich weiß, die einzige Möglichkeit, tatsächlich Paginierung (so dass es schneller zu erreichen, weil Sie nur sind 15 Datensätze aus der Datenbank zu einem Zeitpunkt abrufen), indem Sie mit Ihrer Server-Seite (dh http://datatables.net/examples/data_sources/server_side.html)

Es sieht nicht so aus, als ob Sie das tun. Es sei denn ... self.accountCollection.getData() ist ein Ajax-Callback, aber in jedem Fall, wenn Sie die DataTable instanziieren, sollten Sie "ajax: tableData" nicht "aaData: tableData" verwenden.

Möglicherweise verwechseln Sie den JSON, den Datenfelder zurückgibt, mit der Datatables-API, die Sie zum Interagieren/Initialisieren mit der Datentabelle verwenden.

Sorry, das war ein bisschen viel lol macht irgendwas Sinn?

+0

gut sein 'self.accountCollection' ist ein Abrufen der Benutzerliste von dem Server: so etwas wie unten .. this.accountCollection = new ipiadmin.collections.AccountCollection(); macht es noch Sinn, einen clientseitigen Anruf zu machen ..? – user1234

+0

können Sie self.accountCollection überschreiben, um Paginierungsdetails in das JSON aufzunehmen, das abgerufen wird. Grundsätzlich sollte Ihr JSON etwa so aussehen wie {"sEcho": 15, "iTotalRecords": 2000, "iTotalDisplayRecords": 2000, "aaData": [Ihre ersten 15 Datenzeilen]} und dann self.accountCollection als verwenden die Ajax-Quelle in Ihrer Datentabelle init. Auch, nur neugierig, was ist Ihr Stack (Client und Server)? –

+0

gibt es irgendeinen Weg, den Sie mit einem Beispiel versehen könnten ... Danke für die Hilfe! – user1234

3

enter image description here

Paginierung funktioniert insgesamt Datensatz angezeigt Sie minimale Änderungen folgende ausführen müssen.

"iTotalDisplayRecord" wird insgesamt gefilterten Datensätze

Verwandte Themen