Beyond Basic Filters: Excel-Style Grid Multi-Selects
In diesem Artikel zeigen wir, wie wir Excel-ähnliches Verhalten in unsere Grid-Multi-Selects eingebaut haben und zeigen die Vorteile und Unterschiede zu einfachen Multi-Select-Filtern. Dies ist der vierte Artikel in unserer Serie "Beyond Basic Filters".
Einfache Grid Multi-Selects
Einfache Multi-Select-Filter in einzelnen Spalten von Grid-Ansichten arbeiten unabhängig voneinander, das heißt, jeder Filter zeigt verfügbare Daten aus dem ungefilterten Gesamtdatensatz an. Zum Beispiel wird in einer Tabelle mit Produkten, Kategorien und Unterkategorien beim Anwenden eines Filters auf die Kategorie "Elektronik" nur noch Zeilen für Produkte in der Kategorie "Elektronik" angezeigt. Der Multi-Select-Filter für die Spalte "Unterkategorie" bleibt dabei unbeeinflusst und zeigt weiterhin Unterkategorien aus anderen Kategorien an.
Verhalten von Multi-Select-Filtern in Excel
Wie in den vorherigen Artikeln gezeigt, hat Microsoft Excel seine eigenen Besonderheiten bei Multi-Select-Filtern. Wenn ein Filter auf eine Spalte angewendet wird, werden die verfügbaren Optionen im Multi-Select-Filter einer anderen Spalte aktualisiert, um die verbleibenden Daten widerzuspiegeln. Wird beispielsweise ein Kategorie-Filter gesetzt, zeigt der Unterkategorie-Filter nur noch Unterkategorien an, die innerhalb der gefilterten Kategorie verfügbar sind.
Implementierung
Um das Excel-ähnliche Filterverhalten zu implementieren, können wir nicht einfach die Liste der sichtbaren Elemente verwenden, um die Filterwerte zu generieren. Selbst wenn nach Anwenden des Filters Kategorie nur noch „Elektronik“ verfügbar ist, sollte der Filter dennoch alle anderen nicht ausgewählten Kategorien noch anzeigen. Die Lösung besteht darin, dass jeder Filter eine Liste der verbleibenden Elemente erhält, nachdem alle anderen Spaltenfilter angewendet wurden. Dieser Ansatz stellt sicher, dass Filter all die Elemente anzeigen, die verfügbar wären, wenn der aktuelle Spaltenfilter entfernt würde.
Jeder Filter muss also alle anderen Filter auf den Basisdatensatz anwenden, um die Liste der verfügbaren Werte zu generieren. Daher muss jede Filterkomponente entweder über die anderen Filter Bescheid wissen oder eine individuell generierte Liste von einem globalen Controller erhalten, der Zugriff auf alle Daten und Filter hat.
Nachrüsten unserer bestehenden Komponenten
Unsere Grid-Komponente hat bereits einen zentralen Controller, was es uns relativ einfach macht, dieses Verhalten auf unsere zuvor unabhängigen Filter zu übertragen. Eine wichtige Entscheidung ist, ob das Ergebnis für jeden Filter bei jeder Änderung eines Filters vorab (also "eager") berechnet werden soll, oder ob die Berechnung erst beim Öffnen des Filters für eine bestimmte Spalte erfolgt. Angesichts potenziell großer Datenmengen in unserem Anwendungsfall war unsere Erwartung, dass eine vorab durchgeführte Berechnung die Anwendung beim Setzen eines neuen Filters spürbar verlangsamen würde. Daher haben wir uns dafür entschieden, die Liste der verfügbaren Werte bei Bedarf zu berechnen.
Benutzerpräferenz
Unsere Nutzer waren es gewohnt, dass Filter immer alle verfügbaren Daten anzeigen und nicht nur die nach Anwendung anderer Filter verbleibenden Daten. Um dem gerecht zu werden, haben wir eine globale Einstellung hinzugefügt, mit der die Nutzer zwischen klassischen Filtern und Excel-ähnlichen Filtern wählen können.
Fazit
Excel-ähnliche Grid-Multi-Selects bieten im Vergleich zu einfachen Grid-Multi-Selects ein dynamischeres und kontextsensitiveres Filtererlebnis. Wir bieten damit den Nutzern unserer Anwendung eine intuitivere und effizientere Möglichkeit, Daten in Grid-Komponenten zu filtern
)
)
)
)
)
)
)
)
)
)
)
)