2017-07-28 2 views
1

Wenn ich Spaltenfilterung in Datatables verwende, möchte ich, dass, sobald der erste Spaltenfilter ausgewählt und das resultierende Dataset gerendert wird, die anderen Spalten gefiltert werden, um zu verfeinern, was angezeigt wird.Datatables-Filterung dynamisch zwischen Spalten

Sehen Sie folgendes Beispiel: https://www.datatables.net/examples/api/multi_filter_select.html

Wenn Sie noch zu den vier Standorten wählen ‚Entwickler‘ aus dem Positionsfilter, verfeinern die Standortfilter sollte. Stattdessen zeigen sie alle Orte aus dem ursprünglichen Datensatz. Gibt es eine Möglichkeit, sie zu verfeinern, wenn jeder Filter angewendet wird?

Antwort

1

Versuchen in drawCallback

drawCallback: function() { 
    var api = this.api(); 
    let data = api.rows({ 
    filter: 'applied' 
    }).data(); 
    $.each($(api.table().footer()).find("select"), function(colIndex) { 
    var currData = data.map(function(cols) { 
     return cols[colIndex]; 
    }); 
    $.each($(this).find("option"), function() { 
     if (currData.indexOf($(this).text()) != -1 || $(this).text() == '') 
     $(this).attr("disabled", false).show(); 
     else 
     $(this).attr("disabled", true).hide(); 
    }) 
    }); 
} 

FIDDLE

+0

Danke Optionen zu verstecken, funktioniert perfekt! Funktioniert das nicht in IE11? – tonyyeb

+1

In IE11 werfen einen Syntaxfehler durch die Pfeilfunktion verursacht ... aktualisiert die Antwort mit Standardcode – Vanojx1

+0

Fantastisch! Gute Arbeit! Noch einmal vielen Dank. – tonyyeb