2014-12-24 8 views
11

ich die Tables bin mit javscript Bibliothek und ich versuche, eine Zeile basierend auf filtern, wenn ein numerischer Wert größer als 60Javascript Tables - filter() Funktion nicht wie erwartet funktioniert

Ich versuche http://datatables.net/reference/api/filter%28%29

Der Filter Code sieht wie folgt aus:

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

Das Problem ist, alle Zeilen sind noch sichtbar und keine Filterung wurde an alles getan, diesem Beispiel zu folgen. Auch wenn meine Funktion einfach false zurückgibt, sind immer noch alle Zeilen sichtbar. Was ist denn hier los?

JSFiddle beispiel

http://jsfiddle.net/1hLcpr3x/

Antwort

12

Das Beispiel Sie eine Verknüpfung zu filtert die zurückgehende Anordnung der Daten aus den Spalten, nicht die Zeilen selbst.

Sie können dies überprüfen, indem Sie den Inhalt der Rückkehr und es

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

console.log(filteredArray); 

FIDDLE

Dies ist, was die filter Verfahren der Fall ist, es filtert die Daten, wenn Sie es zurück mit data(), nicht die Zeilen anzumelden.

die Zeilen anstelle filtern, damit Sie in die Datentabellen-Plugin Sie insbesondere $.fn.dataTableExt.afnFiltering, und tun so etwas wie dieses

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

FIDDLE

Documentation for DataTables filtering

+0

Vielen Haken würde, !!! Das funktioniert großartig. – user985723

+0

Ich habe mehrere Databases auf einer Seite. Wie stelle ich sicher, dass mein benutzerdefinierter Hook-Filter nur mit dem von mir gewünschten funktioniert? Kann ich die Tabelle vom übergebenen Einstellungsobjekt ableiten? – Numeron

+0

@ CanÜrek - was meinst du, es funktioniert nicht? Es filtert jeden mit einem Alter von 60 oder mehr heraus, und in der letzten Geige gibt es keine Reihen mit Personen, die älter als 59 sind, also funktioniert es gut? – adeneo

Verwandte Themen