2014-12-24 19 views
11

Sto usando le DataTable javscript biblioteca e sto cercando di filtrare una riga sulla base di un valore numerico, se è maggiore di 60.Javascript DataTable - filtro() non funziona come previsto

sto cercando a seguire questo esempio: codice http://datatables.net/reference/api/filter%28%29

Il filtro presenta così:

table 
    .column(3) 
    .data() 
    .filter(function (value, index) { 
     return value > 60 ? true : false; 
    }) 

Il problema è tutte le righe sono ancora visibili e nessun filtro è stato fatto a tutti. Anche se la mia funzione restituisce semplicemente false tutte le righe sono ancora visibili. Cosa sta succedendo qui?

JSFiddle di esempio

http://jsfiddle.net/1hLcpr3x/

risposta

12

L'esempio si sta creando un collegamento è filtrare la matrice di ritorno dei dati dalle colonne, non i file stessi.

È possibile verificare questo restituendo il contenuto e la registrazione è

var filteredArray = table.column(3) 
         .data() 
         .filter(function(value, index) { 
          return value > 60 ? true : false; 
         }) 
         .draw(); 

console.log(filteredArray); 

FIDDLE

Questo è ciò che il metodo filter fa, filtra i dati quando si torna con data(), non le righe.

per filtrare le righe in atto, ci si gancio nel plugin di DataTable, più specificamente $.fn.dataTableExt.afnFiltering, e fare qualcosa di simile

$.fn.dataTableExt.afnFiltering.push(
    function (oSettings, aData, iDataIndex) { 
     return aData[3] < 60; 
    } 
); 

FIDDLE

Documentation for DataTables filtering

+0

Grazie !!! Funziona alla grande – user985723

+0

Ho più datatables su una pagina, come posso assicurarmi che il mio filtro personalizzato con hook funzioni solo con quello che voglio? Posso derivare la tabella dall'oggetto impostazioni passato? – Numeron

+0

@ CanÜrek - cosa vuoi dire che non funziona? Filtra chiunque abbia un'età di 60 anni o più, e nell'ultimo violino non ci sono righe con persone di età superiore a 59 anni, quindi funziona bene? – adeneo

Problemi correlati