Grid
Tabellen bieten eine Übersicht über eine große Menge von Daten.
Overview
Intro
Eine Tabelle wird verwendet, um große Mengen von Daten strukturiert und übersichtlich darzustellen. Je nach Tabellentyp ist es z.B. möglich diese Daten auszuwählen, zu sortieren und Aktionen auszulösen.
Je nach Anwendungsfall macht es Sinn Tabellen als Teil einer Seite zu verwenden, oder eine dedizierte Seite (Tabellenseite) zu erstellen.

Grid
Verwendung
| 👍 Do | 👎 Don't |
|---|---|
| ... wenn eine große Menge von Daten eines zusammengehörigen Datensatzes dargestellt werden soll. ... wenn Daten übersichtlich dargestellt werden sollen. ... wenn Aktionen für einzelne oder mehrere Datensätze ausgelöst werden können. ... wenn Statusinformationen zu verschiedenen Datensätzen angezeigt werden sollen. | ... wenn keine strukturierten Daten vorliegen. ... wenn ein Text in Spalten dargestellt werden soll. |
Guidelines
Aufbau
In der Basisausführung besteht die Tabelle aus einer Kopfzeile (Header), die mindestens zwei Spalten hat. Darunter befinden sich die Datenzeilen mit der gleichen Anzahl an Spalten. Die Zeilen werden durch Trennlinien voneinander getrennt. Jede Zeile besteht aus so vielen Zellen wie Spalten vorhanden sind.
Die Ausrichtung der Daten in einer Zelle ist abhängig vom Format. Texte und numerische Eingaben, die keine Größen beschreiben (z. B. Namen, IDs, Telefonnummern, URLs, E-Mail-Adressen, Währungszeichen, Datum), sind innerhalb ihrer Zelle oder Spaltenüberschriften linksbündig ausgerichtet, während Zahlen bzw. numerische Eingaben, die Größen beschreiben (z. B. Geldbeträge, Prozentzahlen) rechtsbündig in Zellen und Spaltenüberschriften ausgerichtet sind.

Aufbau ohne Gitterlinien
Umfangreiche Tabellen sollten mit Gitterlinien dargestellt werden. So können die Daten vom Nutzer schneller erfasst und zugeordnet werden. Diese Darstellung löst die bisherige Darstellung mittels Zebra-Muster ab.

Aufbau mit Gitterlinien
Grid Toolbar
Tabellen mit denen weiter interagiert werden soll, können mit einer Tabellen-Funktionsleiste über der Tabelle ergänzt werden. Zusätzlich stehen die Möglichkeiten bereit einzelne oder mehrere Zeilen auszuwählen, sowie Aktionen direkt auf einer Zeile durch Inline-Aktionen auszulösen. Die Funktionalitäten werden im Detail unter Verhalten beschrieben.
Teile der Grid Toolbar (Funktionsleiste)

Grid Toolbar
1. Tabellenüberschrift
Verwende die Tabellenüberschrift, wenn die gesamte Anzahl der Objekte, oder die Anzahl der Treffer nach einer Suche, angezeigt werden sollen. Generische Bezeichnungen wie Objekte sind ebenfalls zulässig. Die Überschriftengröße kann je nach Kontext der Tabelle durch überschreiben des Text-Styles angepasst werden.
Wenn keine Objekte gefunden oder vorhanden sind, wird kein Zahlenwert angezeigt.
Bei Verwendung von Gruppierungen im (Tree) Grid soll hier nur die Anzahl der übergeordneten Elemente (Wurzelelemente) dargestellt werden.
2. Segmented Control
Verwende die Segmented Control als (zusätzlichen) Filter in Tabellen mit vielen Datensätzen wenn z.B. ausschließlich fehlerhafte oder ausgewählte Datensätze angezeigt werden sollen.
3. Zustandsanzeige
Die Zustandsanzeige gibt darüber Auskunft in welchem Zustand sich die Tabelle aktuell befindet. Folgende Zustände werden abgebildet:
Suche läuft...
Dieser Zustand wird durch die Interaktion mit dem Suchfeld oder die Suchleiste ausgelöst.
Laden...
Dieser Zustand wird durch das Nachladen von Daten durch das Scrollen innerhalb der Tabelle ausgelöst.
4. Suchfeld
Tabellen mit vielen Objekten profitieren von einem Suchfeld. Verwende das Suchfeld nur, wenn es keine andere Möglichkeit gibt in der Tabelle zu suchen, wie z.B. über eine Suchleiste.
Das Suchfeld sollte alle sichtbaren Spalten durchsuchen.
5. Aktionsmenü
Im Aktionsmenü befinden sich generische Funktionen wie z.B. das Hinzufügen, Kopieren, Löschen von Objekten oder das Exportieren der Tabelle als Excel Datei, sowie Batch-Aktionen mit denen sich Aktionen auf mehrere Objekte anwenden lassen.
Zusätzlich können hier anwendungsspezifische Aktionen verortet werden.
Siehe Verhalten der Tabellen-Funktionsleiste für weitere Informationen zur Tabellen-Funktionsleiste.
Varianten/Typen
Die Varianten einer Tabelle sind vielfältig. Ausgehend von der Basistabelle können die unter "Verhalten" beschriebenen Funktionen miteinander kombiniert werden, um die Tabelle an die Anforderungen des jeweiligen Anwendungsfalls anzupassen. Die Funktionalitäten können beliebig miteinander kombiniert werden. Lediglich die Batch-Funktion erfordert immer auch die Möglichkeiten des Multi-Selects.
Verhalten
Einfacher Klick (single click)
Ein einfacher Klick auf eine Tabellenzeile selektiert diese. Ein Klick auf eine bereits ausgewählte Zeile hebt die Selektierung auf. Auch bei der Verwendung von Checkboxen bewirkt ein einfacher Klick die Selektion einer Zeile. In diesem Fall können mehrere Zeilen gleichzeitig ausgewählt sein (multi-select). Wenn keine Checkboxen verwendet werden, kann jeweils nur eine Zeile ausgewählt sein. Das heißt, dass in diesem Fall ein Klick auf eine andere Zeile die neue Zeile selektiert und die vorherige Selektion aufhebt.
Doppelklick (double click)
Bei einem Doppelklick auf eine Tabellenzeile werden, falls vorhanden, die Details zum zugehörigen Datensatz angezeigt. Wenn es keine Details gibt, ist der Doppelklick für die ganze Tabelle deaktiviert. Da die Funktionalität des Doppelklicks für den Nutzer schwer zu finden ist, wird empfohlen, die Navigation zu den Details auch als Inline-Aktion zur Verfügung zu stellen.
Lazy-Loading
Das sogenannte Lazy-Loading kommt vor allem bei Tabellen mit umfangreichen Daten zum Einsatz. Es werden nur die für den Nutzer sichtbaren Datensätze geladen. Die weiteren Daten werden beim Scrollen der Tabelle nachgeladen. Dies dient vor allem dazu die Anfangsladezeit zu verkürzen und ermöglicht es, dass keine unnötigen Daten geladen werden, die nicht vom Nutzer benötigt werden.
Sortierfunktion
Es ist möglich die Sortierung einzelner Tabellenspalten zu ermöglichen. Hierfür erscheint in den sortierbaren Spalten ein Sortier-Icon. Dieses zeigt an, ob die Spalte sortiert ist. Ist dies der Fall, wird kommuniziert, ob die Sortierung auf- oder absteigend erfolgt. Der Nutzer kann durch einen Klick auf den Spaltennamen die Sortierung aktivieren bzw. ändern. Wenn die Tabelle gruppierte Datensätze enthält, bleiben die Gruppierungen erhalten und es werden die übergeordneten Gruppen anhand des gewählten Kriteriums sortiert. Zusätzlich werden die Elemente innerhalb der Gruppen entsprechend sortiert.
Spaltenbreiten
Folgende Einstellungen sind möglich:
- Flexible Breite, automatische am Inhalt ausrichten (Standard)
- Flexible Breite, verbleibender Raum wird eingenommen
- Feste Breite
Standardmäßig sollte sich die Spaltenbreite flexibel eingestellt sein und sich automatisch am Inhalt ausrichten.
Spaltenbreite anpassbar machen
Optional kann es dem Nutzer ermöglicht werden, die Spaltenbreite einzelner Spalten manuell anzupassen. Wird über der Kopfzeile gehovert, werden in diesem Fall Trennlinen zwischen den Spalten eingeblendet, die der Nutzer mit dem Mauszeiger greifen und ziehen kann. Die Inhalte der Spalte passen sich entsprechend an und werden bei Bedarf mehrzeilig.
Lange Zelleninhalte
Die Spaltenbreite passt sich standardmäßig an die Inhalte der Zellen an. Wenn der gesamte verfügbare Platz in der Breite nicht ausreicht, um alle Spalten der Tabelle gleichzeitig anzuzeigen, wird die Tabelle horizontal scrollbar. Wenn der Nutzer die Spaltenbreite einer einzelnen Spalte manuell verringert und somit der verfügbare Platz in einer Zelle nicht ausreicht, um den ganzen Inhalt anzuzeigen, wird der Zelleninhalt mit Ellipsis ("...") gekürzt angezeigt. Um den gesamten Zelleninhalt wieder sichtbar zu machen, kann der Nutzer die Breite der Spalte manuell vergrößern.
Gruppierung
Bei verschachtelten Daten kann es Sinn machen, einzelne Datensätze in der Tabelle als Gruppe darzustellen, sodass sich der Nutzer besser orientieren kann und es ihm möglich ist, zu erkennen welche Daten zusammengehören. In diesem Fall wird der Gruppenname als übergeordnete, aufklappbare Zeile angezeigt. Diese übergeordnete Zeile (Level 0) wird optisch hervorgehoben. Wenn die Zeile aufgeklappt wird, werden die zugehörigen Datensätze der Gruppe dargestellt. Diese sind etwas eingerückt, sodass die Hierarchie klar wird. Es kann mehrere Hierarchiestufen geben. Das heißt einer Gruppe können eine oder mehrere Untergruppen zugeordnet sein, die wiederum Datensätze beinhalten usw.

Gruppierung in einer Tabelle
Inline-Aktionen
SEIT VERSION 4.0.0
Es liegt eine Erweiterung durch Vaadin 23.1 vor. Spalten lassen sich nun auch rechts fixieren (Inline Aktionen müssen auf die Vaadin-Lösung umgestellt werden).
Sogenannte Inline-Aktionen sind Aktionen, die auf einzelne Datensätze angewendet werden können (z.B. duplizieren, Details anzeigen). Diese Aktionen sind mit einer Taste am rechten Ende der Zeile des jeweiligen Datensatzes verknüpft. Ein Klick auf die Taste löst die Aktion aus. Es können bis zu zwei Inline-Aktionen nebeneinander in einer Zeile angezeigt werden.
Info für DEV:
Siehe Showcase Beispiele action-and-toolbar und action-ellipsis für Implementierungsdetails um dieses Verhalten sicherzustellen.

Tabelle mit zwei Inline-Aktionen
Tooltip
Icon-Tasten benötigen Tooltips, damit die Nutzer die Funktion der Taste besser verstehen können.

Inline Aktion mit Tooltip
Overflow Verhalten
WARNING
Experimentelles Feature
Die beste technische Umsetzung ist noch nicht abschließend geklärt.
Alle Inline-Aktionen befinden sich in einer Spalte. Die Spalte hat keinen Spaltentitel und ist nicht sortierbar. Ihre Breite kann nicht angepasst werden. Wenn mehr als zwei Inline-Aktionen vorhanden sind, werden diese mit einem vertikalen Ellipsis-Icon zusammengefasst. Ein Klick auf das Ellipsis-Icon öffnet die Liste mit Inline-Aktionen, ähnlich wie bei einem Dropdown. Ein erneuter Klick auf das Ellipsis-Icon schließt die Liste. Ein Klick auf eine der Inline-Aktionen in der Liste löst die Aktion aus. Mit dem Ellipsis-Icon werden alle Aktionen zusammengefasst, d. h. es kann daneben kein weiteres Icon stehen. In der Dropdown-Liste werden keine Icons für die Aktionen angezeigt.

Tabelle mit mehr als 2 Inline Aktionen
Da Inline-Aktionen nicht auf mehrere Datensätze gleichzeitig angewendet werden können, sollten hier nur Aktionen zum Einsatz kommen, die als Batch-Aktion keinen Sinn ergeben.
Hinweis zur Barrierefreiheit von Inline-Aktionen
Um die Barrierefreiheit zu gewährleisten, müssen alle Inline-Aktionen über die Tastatur fokussiert werden können und mit einem "aria-label" versehen werden, welches die Aktion eindeutig beschreibt.
Beispiel: Im oben visualisierten Beispiel wäre das aria-label für die Aktion "Details anzeigen" folgendermaßen definiert: aria-label="Details von Margarete Wolf anzeigen".
Batch-Aktionen
Lassen sich Aktionen direkt auf mehrere Objekte anwenden, dann spricht man von Batch-Aktionen.

10 Batch Aktionen
Damit Batch-Aktionen ausgeführt werden können, muss Multi-Select für die Tabelle aktiviert werden.
Batch-Aktionen können immer auf mehrere Objekte angewendet werden.
| 👍 Do | 👎 Don't |
|---|---|
| ... wenn sich eine Aktion auf mehrere Elemente anwenden lässt. | ... wenn sich eine Aktion nicht auf mehrere Elemente anwenden lässt. |
Multi-Select
Eine Tabelle mit Multi-Select Funktion hat eine Checkbox in jeder Daten-Zeile, mit der die jeweilige Zeile ausgewählt werden kann.

Tabelle mit Multiselect
Info für Dev:
Die Nutzung von Multi-Select ist sowohl für Lazy-Loading als auch Eager-Loading in Vaadin vorgesehen
Select-All
In der Kopfzeile befindet sich ganz links über allen anderen Checkboxen eine übergeordnete Checkbox, die alle Datensätze der Tabelle auswählt. Eine Gruppe von Datensätzen kann ebenfalls über eine Checkbox ausgewählt werden. In diesem Fall werden auch alle untergeordneten Elemente der Gruppe ausgewählt. Wenn nur einzelne Elemente einer Gruppe ausgewählt werden, geht die übergeordnete Checkbox in einen unbestimmten Zustand über. Dieses verdeutlicht dem Nutzer, dass mindestens ein Unterelement jedoch nicht alle Unterelemente ausgewählt wurden.

Tabelle mit Multi-Select und Select-All Funktion
Hinweis:
Nur zu verwenden, wenn die Gesamtanzahl an auswählbaren Objekten nicht zu hoch ist, um sie direkt alle in die Tabelle zu laden
Info für Dev:
Die Nutzung von Select-All ist nur für Tabellen die Eager-Loading in Vaadin verwenden vorgesehen.
Responsive Verhalten
Tabellen tauchen in unterschiedlichen Kontexten auf. Daher muss die Tabelle und Tabellen-Funktionsleiste auf allen Endgeräten funktionieren.

Responsive Verhalten
1. Zustandsindikator
Der Zustandsindikator kann bei Bedarf nur noch das Lade-Icon oder den Lade-Indikator anzeigen.
2. Suchfeld
Das Suchfeld schrumpft auf eine minimale Breite zusammen. Es wandert nicht wie die restlichen Tasten im Aktionsmenü in das Overflow-Menü (Icon-Taste mit Ellipsis-Icon).
3. Aktionsmenü
Tasten die keinen Platz mehr haben, wandern in das Overflow-Menü (Icon-Taste mit Ellipsis-Icon).
4. Inline Aktionen
Die Inline Aktionen überlagern alle weiteren Spalten und sind auf der rechten Seite immer sichtbar.
Zahlen und Einheiten
Zahlen und Einheiten, wie z.B. Beträge 2134,45 €, werden standardmäßig rechtsbündig und in einer Zelle zusammen dargestellt.
Grid Toolbar

Verhalten Grid Toolbar
1. Anzahl der Objekte
Neben der Tabellenüberschrift steht die gesamte Anzahl an Objekten, die in der Tabelle angezeigt oder durch Scrollen erreicht werden können.
2. Suchfeld
Bei jeder Änderung löst das Suchfeld automatisch die Suche aus. Dabei sollten alle sichtbaren Spalten durchsucht werden.
Sollte diese Suche dem Anwendungsfall nicht gerecht werden, empfehlt das UX Team die Verwendung einer Tabellenseite, die mit der Suchleiste zusammen mehr Möglichkeiten bietet.
3. Zustandsanzeige
Die Zustandsanzeige gibt den Zustand der Tabelle dynamisch wieder.
4. Keine Daten
Sollten von vornherein oder nach einer Suche keine Daten verfügbar sein, dann steht nach der Tabellenüberschrift keine Zahl in den Klammern.
Unter der Tabellenklopfzeile steht die Meldung "Keine Daten verfügbar".
5. Dynamische Anzeige der Anzahl der Objekte
Die Anzahl der gefundenen Daten wird dynamisch in Klammern hinter der Tabellenüberschrift angezeigt.
6. Feste Höhe der Tabelle
Die Tabellenhöhe bleibt fix, auch wenn die Anzahl der Ergebnisse nicht die gesamte Höhe benötigt. Damit ist sichergestellt, dass die Benutzeroberfläche durch das Suchen nicht unruhig wird.
Badges
Badges werden in Tabellenzellen immer linksbündig ausgerichtet.
Highlighted Row
Wenn dem Nutzer eine deutlich hervorgehobene Zeile innerhalb der Tabelle angezeigt werden soll, kann hierfür die highlighted Funktion verwendet werden.

Grid Highlighted Row
Highlighted Cell
Wenn dem Nutzer eine hervorgehobene Zelle innerhalb der Tabelle angezeigt werden soll, kann hierfür die highlighted Funktion verwendet werden.

Grid Highlighted Cell
States
Eine Tabellenzeile kann verschiedene Zustände haben.
Enabled
Eine wählbare Zeile kann vom Nutzer angeklickt und ausgewählt werden. Es ist möglich, die Inline-Aktionen der Zeile auszulösen.

States einer Tabellenzeile
Hover
Wenn der Nutzer den Mauszeiger über eine Zeile bewegt, wird diese visuell leicht hervorgehoben.
Focus
Über die Tastatur kann jeweils eine Zelle einer Tabelle oder der Kopfzeile fokussiert werden. Die fokussierte Zelle wird durch einen farbigen Rahmen hervorgehoben.
Selected
Eine gewählte Zeile wird farblich hervorgehoben. Falls vorhanden, wird die zugehörige Checkbox ausgewählt dargestellt. Der Selected Zustand kann in Kombination mit anderen Zuständen auftreten (z.B. Selected & Hover).
Active
Der aktive Zustand einer Zeile wird ebenfalls visuell hervorgehoben. Eine Zeile ist aktiv, während die Zeile angeklickt wird (oder tapped bei Touch-Bedienung).
Leer
Eine leere Tabelle einhält einen Hinweis, dass keine Daten existieren oder gefunden wurden.

Empty Grid
Barrierefreiheit
Tastaturbedienung
Über Tabulatortaste ("Tab") oder Hochstell- und Tabulatortaste ("Umschalttaste" + "Tab") lässt sich eine Zelle der Kopfzeile und der Inhaltszeilen einer Tabelle fokussieren. Mit den Pfeiltasten ist es möglich, den Fokus auf andere Zellen innerhalb der Kopfzeile oder Tabelle zu setzen. Eine Zeile kann mit der Leerzeichentaste ("Space") ausgewählt werden.
Spezifische Kriterien
Neben den grundlegenden Kriterien der Barrierefreiheit sollten folgende Punkte bei Implementierung der Tabelle beachtet werden:
- Bei Spaltentiteln sollten
aria-describedbyTags verwendet werden. - Inline Aktionen: In der Tabelle müssen die
aria-labelsder Inline Actions den Kontext kommunizieren da sie sonst nicht hilfreich sind. Zudem müssen Tooltips verwendet werden. - Darstellung eines Status: Wenn Icons zur Visualisierung eines Status in einer Tabelle verwendet werden, sind diese nicht klickbar. Da hier üblicherweise kein nebenstehender Text vorliegt, müssen
aria-labelAttribute und Tooltips verwendet werden, um die Barrierefreiheit und die Screenreader Unterstützung zu gewährleisten.
![]() | aria-label Attribut bei Icons |
![]() | aria-label Attribut bei Status-Icons |
Develop Vue
Die Implementierung der Webcomponenten in Vue.js kann in folgendem Showcase innerhalb des AKDB Netzwerks betrachtet werden: https://mate-ds-vue-components-showcase-25.core-platform.kubt.akdb.net/?path=/docs/komponenten-grid--docs
Develop Flow
Der Showcase ist innerhalb des AKDB Netzwerks zu finden unter:
- Tree Grid: https://mate-ds-flow-components-showcase-25.core-platform.kubt.akdb.net/?src=component%252Ftree-grid

