2014-09-19 14 views
7

Il server restituisce 15 record per pagina e i record totali sono oltre 2000. Vorrei visualizzare i primi 15 record e quindi ad ogni clic del pulsante "Avanti", visualizzare i restanti tutti i record (15 per pagina). Per questo facciamo una paginazione lato server o lato client ???Impaginazione lato server utilizzando i datatables

Ecco il mio tavolo e gli attributi im utilizzando per impaginazione in DataTables:

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; 
    }, 

Il returnData mi restituirà un oggetto che ha campi sarò popolano tabella IA: oggetto riaccordata: (approssimativamente)

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

il getData() funzione sarà poi chiamato a RETUEN i dati dal datatbase utilizzando:

var tableData = this.accountCollection.getData() 

quindi in pratica tableData avrà i campi e i valori necessari da visualizzare nella tabella. Ora potrei avere più di 1000 record restituiti dal server. Quindi avevo bisogno di impaginazione. Quello in fiddle è quello che ho provato e non ha alcun impatto sul paginatin .. :(

Penso di avere l'impaginazione di base che viene fornito con i datatables, ma ora ho bisogno di avere un lato server, per ottenere solo 15 record da visualizzare alla volta e al clic del pulsante "next" e "prev" dovrei poter effettuare chiamate ajax per ottenere i record rimanenti 15 per pagina ...

Spero che questo ti aiuti per favore, fatemi sapere se avete bisogno di ulteriori dettagli

Come posso ottenere l'impaginazione utilizzando i datatables? Per favore fatemi sapere se necessario maggiori dettagli ..

Grazie

risposta

0

Questo appare sul vostro vicolo ->http://datatables.net/examples/data_sources/js_array.html è puramente lato client

Anche se, per quanto ne so, l'unico modo per raggiungere l'impaginazione reale (rendendo più veloce perché sei solo recuperando 15 record dal database alla volta) è ajax-ing con il lato server (es http://datatables.net/examples/data_sources/server_side.html)

Non mi sembra che tu lo stia facendo. A meno che ... self.accountCollection.getData() sia un callback ajax, ma in ogni caso quando si istanzia il DataTable si dovrebbe usare "ajax: tableData" non "aaData: tableData".

Si può confondere il JSON restituito dai datatables, con l'API di dati che si utilizza per interagire/inizializzare con il datatable.

Scusa, è stato un po 'troppo lol, ha senso?

+0

bene, 'self.accountCollection' è un recupero la lista degli utenti dal server: qualcosa di simile sotto .. this.accountCollection = new ipiadmin.collections.AccountCollection(); ha ancora senso effettuare una chiamata lato client? – user1234

+0

è possibile sovrascrivere self.accountCollection per includere i dettagli di impaginazione nel JSON che recupera. Fondamentalmente, vorresti che il tuo JSON assomigli a {"sEcho": 15, "iTotalRecords": 2000, "iTotalDisplayRecords": 2000, "aaData": [le tue prime 15 righe di dati]} quindi usa self.accountCollection as l'origine Ajax nel tuo init datatable. Inoltre, solo curioso, qual è il tuo stack (client e server)? –

+0

c'è un modo per fornire un esempio ... Grazie per l'aiuto! – user1234

3

enter image description here

paginazione funziona indicato registrazione è necessario eseguire le seguenti modifiche minime.

"iTotalDisplayRecord" sarà totale record filtrati