example - datatables options



jQuery DataTable-Filterung-so verwirrend (1)

Ich bin neu im jQuery dataTables-Plugin, das auf https://datatables.net/ zu finden ist.

Ich versuche, einen benutzerdefinierten Filter für die Tabelle zu implementieren:

Grundsätzlich, wenn ich auf eine Schaltfläche klicke, wird eine benutzerdefinierte Filterfunktion den Wert von Spalte 1 (numerischer Wert) für alle Zeilen testen, und wenn der Wert in der Spalte <50 für eine Zeile bleibt, bleibt die Zeile, sonst ist die Zeile ausgeblendet .

Das Konzept sollte sehr einfach sein, aber ich kann nicht den richtigen Weg finden, die API zu verwenden:

  • column.filter () gibt ein Array mit Spaltenwerten zurück
  • column.search () kann nur Textdaten akzeptieren (nicht funktionieren)

Was ist die API, die den Effekt erzielen kann?

Gibt es etwas wie das Folgende?

var api = $('#table').DataTable();

api.column(1).data().somefilterfunction(function (val, ind) {
    return parseFloat(val) < 50;
}).draw();

Haben Sie diesen Artikel in der Dokumentation gesehen -> https://datatables.net/examples/plug-ins/range_filtering.html ??

Sie können eine benutzerdefinierte Filterfunktion während der Übertragung erstellen, die durch eine Schaltfläche ausgelöst wird:

<button id="filter">filter < 50</button>

Skript :

$("#filter").click(function() {
    $.fn.dataTable.ext.search.push(
        function( settings, data, dataIndex ) {
            return parseFloat(data[0])<50
                ? true
                : false
        }     
    );
    table.draw();
    $.fn.dataTable.ext.search.pop();
});

Demo -> http://jsfiddle.net/dpwgqs2o/

Beachten Sie, dass der Filter innerhalb des Click-Handlers selbst erstellt und wieder entfernt wird, sobald die Tabelle gezeichnet wird. Dies macht den Filter temporär, dh wenn der Benutzer auf eine Spaltenüberschrift klickt, wird der Filter gelöscht. Wenn Sie einen permanenten Filter wünschen, machen Sie den Filter global und entfernen Sie ihn nicht.