2015-11-08 80 views
8

Does DataTable hanno alcun supporto per server-side recupero dei dati in cui il conteggio rocordsTotal è non conosciuti in anticipo?DataTable elaborazione lato server con numero imprecisato di righe

Abbiamo dati per i quali la query per ottenere il conteggio totale è quasi costosa come solo l'interrogazione di tutti i record. Sarebbe necessario se ci fosse un modo per far sapere ai datatables che il conteggio recordsTotal non è noto. Tale funzionalità non è documentata. È supportato?

Aggiornamento 1: Penso di non aver spiegato completamente il mio problema e ho provato a chiedere una versione astratta. Sto usando il plugin datatables.net/extensions/scroller e funziona con l'opzione ajax. Se utilizzo un numero elevato per i record Totale, l'utente può scorrere fino al pulsante e non ho dati da mostrare lì. La stessa cosa è vera con la paginazione, l'utente può fare clic su un numero di pagina che potrebbe non esistere.

+0

Con che tipo di database lavori? Che tipo di tabella/vista è, dal momento che ci vuole così tanto tempo per ottenere il conteggio totale delle righe? – davidkonrad

+0

@davidkonrad https://wiki.postgresql.org/wiki/Slow_Counting –

+0

L'esempio di base sul lato server di DataTable - http://datatables.net/extensions/scroller/examples/initialisation/simple.html - non sembra essere usando TotalRecords. Hai un jsfiddle della tua configurazione attuale? – jjbskir

risposta

3

Sto assumendo per "TotalRecords" il campo "recordsTotal" nell'oggetto che il server restituisce ai datatables. Puoi semplicemente prendere un conteggio per le prossime pagine N che soddisfano i tuoi criteri di ricerca, assegnare questo valore a "recordsFiltered" e "recordsTotal" e non rendere il conteggio totale dei record tramite l'opzione "dom": http://datatables.net/reference/option/domnote il componente i . Non è una funzionalità integrata, ma è una soluzione fattibile per non conoscere in anticipo il conteggio delle tabelle.

Fare in modo che Datatables sappia di avere almeno N più pagine da esaminare tramite il campo "recordsFiltered" in modo che l'impaginazione funzioni correttamente. In questo modo Datatables non ha necessariamente bisogno di sapere esattamente quanti record totali hai per poter funzionare.

È inoltre possibile utilizzare l'opzione footerCallback per personalizzare il riepilogo dei dati sotto la tabella. Date un'occhiata qui: https://datatables.net/examples/advanced_init/footer_callback.html

Inoltre, dal momento che lei ha citato in un commento che si sta utilizzando PostgreSQL, non so se questo è rilevante per voi o no (PostgreSQL non ho mai usato) https://wiki.postgresql.org/wiki/Count_estimate

+0

Grazie mille, l'opzione ** i ** risolve uno dei miei problemi. e usare ** footer_callback ** è davvero utile. non ho spiegato completamente il mio problema nella domanda originale, ho provato a chiedere una versione astratta. sto usando https://datatables.net/extensions/scroller/ plugin e funziona con l'opzione ** ajax **. se uso un numero elevato per ** recordsTotal **, l'utente può scorrere fino al pulsante e non ho dati da mostrare lì. la stessa cosa è vera per l'impaginazione, l'utente può cliccare su un numero di pagina che potrebbe non esistere. –

+0

Se hai un'idea per un'altra opzione, sarò molto apprezzato, altrimenti aspetterò altri due giorni e poi accetterò la tua risposta.grazie :) –

+0

Non utilizzare un numero grande arbitrario. Prendi in considerazione solo la pagina in cui ti trovi e le pagine successive solo per assicurarti che esistano, quindi imposta entrambi i record Total e Records filtrati per quel conteggio. Questo dovrebbe essere più veloce di prendere un conteggio completo del tavolo. – Jakotheshadows