Rendering
Ein Renderer steuert, wie jede Zelle in einer Spalte angezeigt wird. Anstatt einen Rohwert anzuzeigen, transformiert ein Renderer die Daten jeder Zelle in formatisierten Text, Symbole, Abzeichen, Links, Aktionsschaltflächen oder andere visuelle Elemente, die es einfacher machen, die Daten schnell zu lesen und zu verarbeiten.
Die Darstellung erfolgt vollständig im Browser. Der Server sendet Rohdaten und der Client kümmert sich um die Präsentation, wodurch die 'Tabelle' unabhängig von der Zeilenzahl schnell bleibt.
Weisen Sie einer Spalte einen Renderer mit setRenderer() zu. Der Renderer wird einheitlich auf jede Zelle in dieser Spalte angewendet:
TextRenderer<MusicRecord> renderer = new TextRenderer<>();
renderer.setTheme(Theme.PRIMARY);
table.addColumn("title", MusicRecord::getTitle).setRenderer(renderer);
Wenn Sie nur einen Zellwert transformieren oder formatieren müssen, ohne eine DOM-Struktur zu erstellen, verwenden Sie stattdessen einen Wertanbieter. Renderer erzeugen zusätzliche DOM-Elemente für jede gerenderte Zeile, was beim Rendern Kosten verursacht. Reservieren Sie Renderer für visuelle Ausgaben wie Symbole, Abzeichen, Schaltflächen oder jede HTML-basierte Präsentation.
webforJ liefert eingebaute Renderer für die häufigsten Anwendungsfälle. Für alles, was spezifisch für Ihre Anwendung ist, erweitern Sie Renderer und implementieren Sie build(), um eine lodash-Vorlagensitzzeichenfolge zurückzugeben, die im Browser für jede Zelle ausgeführt wird.
Häufige Renderer
Die folgenden Beispiele erläutern vier häufig verwendete Renderer und demonstrieren das setRenderer()-Muster in der Praxis.
TextRenderer
Stellt den Inhalt der Zelle als normalen oder formatierten Text dar. Wenden Sie eine Themenfarbe oder Textdekoration auf eine Spalte an, ohne ihre Struktur zu ändern, beispielsweise indem Sie ein Prioritätsfeld rot hervorheben oder einen Schlüsselidentifikator fett machen.
TextRenderer<MusicRecord> renderer = new TextRenderer<>();
renderer.setTheme(Theme.PRIMARY);
renderer.setDecorations(EnumSet.of(TextDecoration.BOLD));
table.addColumn("title", MusicRecord::getTitle).setRenderer(renderer);
BadgeRenderer
Umhüllt den Zellwert in einem Abzeichen-Element. Unterstützt Themen, Erweiterungen, Farbsaat (automatische unterschiedliche Farben pro eindeutigen Wert) und ein optionales führendes Symbol. Verwenden Sie es für kategorische Werte wie Tags, Typen oder Labels, bei denen verschiedene visuelle Chips den Benutzern helfen, Zeilen schnell zu scannen und zu vergleichen.
BadgeRenderer<MusicRecord> renderer = new BadgeRenderer<>();
renderer.setTheme(BadgeTheme.PRIMARY);
table.addColumn("musicType", MusicRecord::getMusicType).setRenderer(renderer);
BooleanRenderer
Ersetzt true, false und null-Werte durch Symbole. Verwenden Sie es für jede Spalte mit Wahr/Falsch, bei der ein Symbol den Wert schneller kommuniziert als Text, wie z.B. Feature-Flags, aktive/inaktive Zustände oder Opt-in-Felder.
// Standard-Symbole
BooleanRenderer<Task> renderer = new BooleanRenderer<>();
table.addColumn("completed", Task::isCompleted).setRenderer(renderer);
// Benutzerdefinierte Symbole
BooleanRenderer<Task> custom = new BooleanRenderer<>(
TablerIcon.create("thumb-up").setTheme(Theme.SUCCESS),
TablerIcon.create("thumb-down").setTheme(Theme.DANGER)
);
table.addColumn("completed", Task::isCompleted).setRenderer(custom);
CurrencyRenderer
Formatiert einen numerischen Wert als Währungsbetrag unter Verwendung der Regeln des angegebenen Locale. Verwenden Sie es für jede monetäre Spalte, bei der eine lokale korrekte Formatierung (Symbol, Trennzeichen, Dezimalstellen) von Bedeutung ist.
// US-Dollar
table.addColumn("cost", MusicRecord::getCost)
.setRenderer(new CurrencyRenderer<>(Locale.US));
// Euro mit deutscher Lokalisierung
table.addColumn("retail", MusicRecord::getRetail)
.setRenderer(new CurrencyRenderer<>(Locale.GERMANY));
Bedingte Darstellung
ConditionalRenderer wählt einen anderen Renderer für jede Zelle basierend auf dem Zellwert aus. Bedingungen werden der Reihe nach ausgewertet; das erste zutreffende Ergebnis gewinnt. Ein Auffangbecken kann mit otherwise() festgelegt werden.
Das folgende Beispiel zeigt die bedingte Darstellung, die auf eine Rechnungsstatusspalte angewendet wird, und zwischen BadgeRenderer-Varianten basierend auf dem Wert wechselt:
Code anzeigen
- Java
Es funktioniert auch gut für numerische Schwellenwerte. Dieses Server-Dashboard verwendet ConditionalRenderer, um die Themen von ProgressBarRenderer basierend auf CPU- und Speicherauslastungsniveaus zu wechseln:
Code anzeigen
- Java
Bedingungs-API
Bedingungen werden mit statischen Fabrikmethoden erstellt und können mit and(), or() und negate() kombiniert werden.
// Wertgleichheit
Condition.equalTo("active")
Condition.equalToIgnoreCase("active")
Condition.in("active", "pending", "new")
// Numerische Vergleiche
Condition.greaterThan(100)
Condition.lessThanOrEqual(0)
Condition.between(10, 50)
// Wahrheits-/Leeres
Condition.isTrue()
Condition.isFalse()
Condition.isEmpty()
// Zeichenfolgenabgleich
Condition.contains("error")
Condition.containsIgnoreCase("warn")
// Zusammensetzung
Condition.greaterThan(0).and(Condition.lessThan(100))
Condition.isEmpty().or(Condition.equalTo("N/A"))
Condition.isTrue().negate()
// Spaltenüberprüfung
Condition.column("status").equalTo("active")
// Roh-JavaScript-Ausdruck
Condition.expression("cell.value % 2 === 0")
Komposite Darstellung
CompositeRenderer kombiniert mehrere Renderer nebeneinander in einer einzelnen Zelle mit einem Flex-Layout. Verwenden Sie es, um ein Symbol mit Text zu kombinieren, ein Avatar neben einem Namen anzuzeigen oder ein Abzeichen neben einem Statusindikator zu stapeln.
Das Mitarbeiterverzeichnis verwendet einen CompositeRenderer in der Mitarbeiter Spalte, um jedes Mitarbeiteravatar neben dem Namen anzuzeigen:
Code anzeigen
- Java
Benutzerdefinierte Renderer
Wenn kein eingebauter Renderer zu Ihrem Anwendungsfall passt, erweitern Sie Renderer und implementieren Sie build(). Die Methode gibt eine lodash-Vorlagensitzzeichnenfolge zurück, die im Browser für jede Zelle in der Spalte ausgeführt wird, ausgedrückt als Mischung aus HTML und JavaScript.
Erstellen eines benutzerdefinierten Renderers
Schritt 1: Erweitern Sie Renderer mit Ihrem Zeilendatentyp.
public class RatingRenderer extends Renderer<MusicRecord> {
Schritt 2: Überschreiben Sie build() und geben Sie eine lodash-Vorlagensitzzeichenfolge zurück.
@Override
public String build() {
return /* html */"""
<%
const rating = Number(cell.value);
const stars = Math.round(Math.min(Math.max(rating, 0), 5));
const full = '★'.repeat(stars);
const empty = '☆'.repeat(5 - stars);
%>
<span><%= full %><%= empty %></span>
<span style="color: var(--dwc-color-body-text)">(<%= rating.toFixed(1) %>)</span>
""";
}
}
Schritt 3: Weisen Sie den Renderer einer Spalte zu.
table.addColumn("rating", MusicRecord::getRating)
.setRenderer(new RatingRenderer());
Weitere Informationen zur Verwendung der Lodash-Syntax zum Zugreifen auf Zellinformationen und zum Erstellen informativer Renderer finden Sie in diesem Referenzabschnitt.
Zugriff auf mehrere Spalten
Verwenden Sie cell.row.getValue("columnId"), um Geschwisterspalten innerhalb der Vorlage zu lesen. Dies ist nützlich, um Felder zu kombinieren, Deltas zu berechnen oder verwandte Daten zu referenzieren.
public class ArtistAvatarRenderer extends Renderer<MusicRecord> {
@Override
public String build() {
return /* html */"""
<%
const name = cell.row.getValue("artist");
const initials = name
? name.split(' ').map(w => w.charAt(0)).join('').substring(0, 2).toUpperCase()
: '?';
%>
<div style="display: flex; align-items: center; gap: 8px;">
<div style="width: 28px; height: 28px; border-radius: 50%;
background: var(--dwc-color-primary); color: white;
display: flex; align-items: center; justify-content: center;
font-size: 11px; font-weight: 600;">
<%= initials %>
</div>
<span><%= name %></span>
</div>
""";
}
}
Klickereignisse
IconButtonRenderer und ButtonRenderer bieten standardmäßig addClickListener() an. Das Klickereignis bietet Zugriff auf das Datenobjekt der Zeile über e.getItem().
IconButtonRenderer<MusicRecord> deleteBtn = new IconButtonRenderer<>(
TablerIcon.create("trash").setTheme(Theme.DANGER)
);
deleteBtn.addClickListener(e -> {
MusicRecord record = e.getItem();
repository.delete(record);
table.refresh();
});
table.addColumn("delete", r -> "").setRenderer(deleteBtn);
Leistung: Lazy Rendering 25.12
Für Spalten, die visuell aufwendige Renderer wie Abzeichen, Fortschrittsbalken, Avatare oder Webkomponenten verwenden, aktivieren Sie das Lazy Rendering, um die Scroll-Leistung zu verbessern.
table.addColumn("status", Order::getStatus)
.setRenderer(new BadgeRenderer<>())
.setLazyRender(true);
Wenn setLazyRender(true) für eine Spalte festgelegt ist, wird in den Zellen ein leichter animierter Platzhalter angezeigt, während der Benutzer scrollt. Der tatsächliche Zellinhalt wird gerendert, sobald das Scrollen stoppt. Dies ist eine spaltenbezogene Einstellung, die Sie selektiv nur für die Spalten aktivieren können, die davon profitieren.
Code anzeigen
- Java
Zellrenderer erzeugen mehr Entitäten im DOM, was während des Renderns mehr CPU-Arbeit bedeutet, egal welcher Renderer es erzeugt.
Das Lazy Rendering kann helfen, die Leistungsbeeinträchtigung zu reduzieren, wenn ein Renderer wirklich nötig ist. Wenn Sie nur den Wert ändern oder formatieren müssen und kein komplexes DOM erstellen, verwenden Sie stattdessen einen Wertanbieter, um den Wert zu transformieren.
Eingebaute Renderer-Referenz
webforJ liefert ein umfassendes Set von Renderern für die häufigsten Anwendungsfälle. Weisen Sie jeden von ihnen einer Spalte mit column.setRenderer(renderer) zu.
Code anzeigen
- Java
Text und Beschriftungen
TextRenderer - formatierter Text mit optionalem Thema und Dekorationen
Stellt den Zellinhalt als einfachen oder formatierten Text dar. Unterstützt Themenfarben und Textdekorationen wie fett, kursiv und unterstrichen.
TextRenderer renderer = new TextRenderer<>();
renderer.setTheme(Theme.PRIMARY);
renderer.setDecorations(EnumSet.of(TextDecoration.BOLD));
table.addColumn("title", MusicRecord::getTitle).setRenderer(renderer);
BadgeRenderer - Wert wird in einem Abzeichen-Chip angezeigt
Umhüllt den Zellwert in einem Abzeichen-Element. Unterstützt Themen, Erweiterungen, Farbsaat (automatische unterschiedliche Farben pro eindeutigen Wert) und ein optionales führendes Symbol.
BadgeRenderer renderer = new BadgeRenderer<>();
renderer.setTheme(BadgeTheme.PRIMARY);
table.addColumn("musicType", MusicRecord::getMusicType).setRenderer(renderer);
NullRenderer - Platzhalter für null oder leere Werte
Zeigt eine konfigurierbare Fallback-Zeichenfolge an, wenn der Zellwert null oder leer ist; andernfalls rendert es den Wert unverändert.
table.addColumn("notes", MusicRecord::getNotes)
.setRenderer(new NullRenderer<>("N/A"));
Status und Indikatoren
BooleanRenderer - true/false/null wird als Symbole angezeigt
Ersetzt true, false und null-Werte durch Symbole. Standardmäßig ein Häkchen, ein Kreuz und ein Bindestrich.
// Standard-Symbole
BooleanRenderer renderer = new BooleanRenderer<>();
table.addColumn("completed", Task::isCompleted).setRenderer(renderer);
// Benutzerdefinierte Symbole
BooleanRenderer custom = new BooleanRenderer<>(
TablerIcon.create("thumb-up").setTheme(Theme.SUCCESS),
TablerIcon.create("thumb-down").setTheme(Theme.DANGER)
);
StatusDotRenderer - farbiger Indikatorpunkt neben dem Zelltext
Zeigt einen kleinen farbigen Punkt links vom Zellwert an. Ordnen Sie einzelne Werte Themen, CSS-Farbzeichenfolgen oder java.awt.Color-Instanzen zu.
StatusDotRenderer renderer = new StatusDotRenderer<>();
renderer.addMapping("Active", Theme.SUCCESS);
renderer.addMapping("Pending", Theme.WARNING);
renderer.addMapping("Cancelled", Theme.DANGER);
table.addColumn("status", Order::getStatus).setRenderer(renderer);
Zahlen, Währungen und Daten
CurrencyRenderer - lokalisierte Währungsformatierung
Formatiert einen numerischen Wert als Währungsbetrag unter Verwendung der Regeln des angegebenen Locale.
// US-Dollar
table.addColumn("cost", MusicRecord::getCost)
.setRenderer(new CurrencyRenderer<>(Locale.US));
// Euro mit deutscher Lokalisierung
table.addColumn("retail", MusicRecord::getRetail)
.setRenderer(new CurrencyRenderer<>(Locale.GERMANY));
PercentageRenderer - Prozentsatz mit optionalem Mini-Fortschrittsbalken
Zeigt einen numerischen Wert als Prozentsatz an. Setzen Sie das zweite Konstruktionsargument auf false, um zu verhindern, dass ein dünner Fortschrittsbalken unter dem Text gerendert wird.
PercentageRenderer renderer = new PercentageRenderer<>(Theme.PRIMARY, true);
table.addColumn("completion", Task::getCompletion).setRenderer(renderer);
ProgressBarRenderer - vollständiger Fortschrittsbalken für numerische Werte
zeigt einen vollflächigen Fortschrittsbalken mit konfigurierbaren Mindest- und Höchstgrenzen, unbestimmtem Modus und gestreifter oder animierter Anzeige an. Verwenden Sie setText() mit einem lodash-Ausdruck, um benutzerdefinierten Text auf dem Balken zu überlagern.
ProgressBarRenderer renderer = new ProgressBarRenderer<>();
renderer.setMax(100);
renderer.setTheme(Theme.SUCCESS);
renderer.setTextVisible(true);
renderer.setText("<%= cell.value %>/100");
table.addColumn("progress", Task::getProgress).setRenderer(renderer);
MaskedTextRenderer - Zeichenfolge, die mit einer Textmaske formatiert ist
Wendet eine Zeichenmaske auf einen Zeichenfolgewert an. # entspricht jeder Ziffer; literale Zeichen werden beibehalten. Siehe Regeln zur Zeichenmaske für alle unterstützten Maskenzeichen.
table.addColumn("ssn", Employee::getSsn)
.setRenderer(new MaskedTextRenderer<>("###-##-####"));
MaskedNumberRenderer - numerischer Wert, der mit einer Zahlenmaske formatiert ist
Formatiert einen numerischen Wert mithilfe einer Musterzeichenfolge mit lokalisierungsabhängigen Trennzeichen. 0 zwingt eine Ziffer; # ist optional. Siehe Regeln zur Zahlenmaske für alle unterstützten Maskenzeichen.
table.addColumn("price", Product::getPrice)
.setRenderer(new MaskedNumberRenderer<>("###,##0.00", Locale.US));
MaskedDateTimeRenderer - Datum/Uhrzeit-Wert mit einer Datumsmaske
Formatiert einen Daten- oder Zeitwert mit Mustertokens: %Mz (Monat), %Dz (Tag), %Yz (Jahr) und anderen. Siehe Regeln zur Datumsmaske für alle verfügbaren Tokens.
table.addColumn("released", MusicRecord::getReleaseDate)
.setRenderer(new MaskedDateTimeRenderer<>("%Mz/%Dz/%Yz"));
Links und Medien
EmailRenderer - E-Mail-Adresse als klickbarer mailto-Link
Umhüllt den Zellwert in einem mailto:-Anchor. Ein primär thematisiertes Mail-Symbol dient standardmäßig als visuelle Hinweis.
// Standard-Mail-Symbol
table.addColumn("email", Contact::getEmail)
.setRenderer(new EmailRenderer<>());
// Benutzerdefiniertes Symbol
table.addColumn("email", Contact::getEmail)
.setRenderer(new EmailRenderer<>(TablerIcon.create("at")));
PhoneRenderer - Telefonnummer als klickbarer tel-Link
Umhüllt den Zellwert in einem tel:-Anchor. Auf mobilen Geräten öffnet ein Antippen den Wähler. Ein primär thematisiertes Telefonsymbol wird standardmäßig angezeigt.
// Standard-Telefonsymbol
table.addColumn("phone", Contact::getPhone)
.setRenderer(new PhoneRenderer<>());
// Benutzerdefiniertes Symbol
table.addColumn("phone", Contact::getPhone)
.setRenderer(new PhoneRenderer<>(TablerIcon.create("device-mobile")));
AnchorRenderer - Zellwert als konfigurierbarer Hyperlink
Rendert ein klickbares Anker-Element. Das href unterstützt lodash-Vorlagen-Ausdrücke, sodass Sie URLs dynamisch aus dem Zellwert erstellen können.
AnchorRenderer renderer = new AnchorRenderer<>();
renderer.setHref("https://www.google.com/search?q=<%= cell.value %>");
renderer.setTarget("_blank");
table.addColumn("title", MusicRecord::getTitle).setRenderer(renderer);
ImageRenderer - Inline-Bild in einer Zelle
Zeigt ein Bild an. Das src-Attribut unterstützt lodash-Vorlagen-Ausdrücke, sodass jede Zeile ein anderes Bild anzeigen kann.
ImageRenderer renderer = new ImageRenderer<>();
renderer.setSrc("https://placehold.co/40x40?text=<%= cell.value %>");
renderer.setAlt("Cover");
table.addColumn("cover", MusicRecord::getArtist).setRenderer(renderer);
Personen und Avatare
AvatarRenderer - Avatar mit automatisch generierten Initialen
Rendert eine Avatar-Komponente. Die Initialen werden automatisch aus dem Zellwert abgeleitet. Unterstützt Themen und ein Fallback-Symbol.
AvatarRenderer renderer = new AvatarRenderer<>();
renderer.setTheme(AvatarTheme.PRIMARY);
renderer.setIcon(TablerIcon.create("user"));
table.addColumn("artist", MusicRecord::getArtist).setRenderer(renderer);
Symbole und Aktionen
IconRenderer - eigenständiges Symbol, optional klickbar
Rendert ein einzelnes Symbol. Fügen Sie einen Klicklistener hinzu, um interaktive Funktionen zu ermöglichen.
IconRenderer renderer = new IconRenderer<>(TablerIcon.create("music"));
table.addColumn("type", MusicRecord::getMusicType).setRenderer(renderer);
IconButtonRenderer - aktionierbarer Icon-Button mit Zeilenzugriff
Rendert einen klickbaren Icon-Button. Das Klickereignis gibt das Zeilenobjekt über e.getItem() frei, was es ideal für zeilenbezogene Aktionen macht.
IconButtonRenderer renderer = new IconButtonRenderer<>(TablerIcon.create("edit"));
renderer.addClickListener(e -> openEditor(e.getItem()));
table.addColumn("actions", r -> "").setRenderer(renderer);
ButtonRenderer - thematisierter Button in einer Zelle
Rendert eine vollständige Button-Komponente in der Zelle.
ButtonRenderer renderer = new ButtonRenderer<>("Edit");
renderer.setTheme(ButtonTheme.PRIMARY);
renderer.addClickListener(e -> openEditor(e.getItem()));
table.addColumn("edit", r -> "Edit").setRenderer(renderer);
ElementRenderer - rohes HTML-Element mit lodash-Inhalt
Rendert jedes HTML-Element mit einer lodash-Vorlagen-Inhaltzeichenfolge. Dies ist der Ausweg für Situationen, in denen kein integrierter Renderer passt.
ElementRenderer renderer = new ElementRenderer<>("span", "<%= cell.value %>");
table.addColumn("custom", MusicRecord::getTitle).setRenderer(renderer);
Vorlagenreferenz
Renderer bieten einen leistungsstarken Mechanismus zur Anpassung der Art und Weise, wie Daten innerhalb einer Tabelle angezeigt werden. Die Hauptklasse, Renderer, wurde entwickelt, um erweitert zu werden, um benutzerdefinierte Renderer basierend auf lodash-Vorlagen zu erstellen, die eine dynamische und interaktive Inhaltserstellung ermöglicht.
Lodash-Vorlagen ermöglichen das Einfügen von HTML direkt in Tabellenzellen, was sie sehr effektiv für die Darstellung komplexer Zellendaten in einer Tabelle macht. Mit diesem Ansatz ist eine dynamische Generierung von HTML basierend auf Zellendaten möglich, was eine reichhaltige und interaktive Tabellenzell-Inhaltserstellung erleichtert.
Lodash-Syntax
Der folgende Abschnitt beschreibt die Grundlagen der Lodash-Syntax. Während dies keine umfassende Übersicht ist, kann es Ihnen helfen, Lodash innerhalb der Tabelle-Komponente zu verwenden.
Syntaxübersicht für lodash-Vorlagen:
<%= ... %>- Interpoliert Werte und fügt das Ergebnis des JavaScript-Codes in die Vorlage ein.<% ... %>- Führt JavaScript-Code aus und ermöglicht Schleifen, Bedingungsanweisungen und mehr.<%- ... %>- Entkommt HTML-Inhalt und sorgt dafür, dass interpolierte Daten vor HTML-Injection-Angriffen sicher sind.
Beispiele zur Verwendung von Zellendaten:
1. Einfache Wertinterpolation: zeigt direkt den Wert der Zelle an.
<%= cell.value %>
2. Bedingte Darstellung: verwendet JavaScript-Logik, um Inhalte bedingt darzustellen.
<% if (cell.value > 100) { %> 'Hoch' <% } else { %> 'Normal' <% } %>
3. Kombinieren von Datenfeldern: rendert Inhalte unter Verwendung mehrerer Datenfelder aus der Zelle.
<%= cell.row.getValue('firstName') + ' ' + cell.row.getValue('lastName') %>
4. Entkommen von HTML-Inhalten: sicherer Bezug auf von Benutzern generierte Inhalte.
Der Renderer hat Zugriff auf detaillierte Zell-, Zeilen- und Spaltenattribute auf der Client-Seite:
Eigenschaften der TableCell:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
| column | TableColumn | Das zugehörige Spaltenobjekt. |
| first | boolean | Gibt an, ob die Zelle die erste in der Zeile ist. |
| id | String | Die Zell-ID. |
| index | int | Der Index der Zelle innerhalb ihrer Zeile. |
| last | boolean | Gibt an, ob die Zelle die letzte in der Zeile ist. |
| row | TableRow | Das zugehörige Zeilenobjekt für die Zelle. |
| value | Object | Der Rohwert der Zelle, direkt aus der Datenquelle. |
Eigenschaften der TableRow:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
| cells | TableCell[] | Die Zellen innerhalb der Zeile. |
| data | Object | Die von der App bereitgestellten Daten für die Zeile. |
| even | boolean | Gibt an, ob die Zeile gerade nummeriert ist (zum Styling). |
| first | boolean | Gibt an, ob die Zeile die erste in der Tabelle ist. |
| id | String | Eindeutige ID für die Zeile. |
| index | int | Der Zeilenindex. |
| last | boolean | Gibt an, ob die Zeile die letzte in der Tabelle ist. |
| odd | boolean | Gibt an, ob die Zeile ungerade nummeriert ist (zum Styling). |
Eigenschaften der TableColumn:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
| align | ColumnAlignment | Die Ausrichtung der Spalte (links, zentriert, rechts). |
| id | String | Das Feld des Zeilenobjekts, von dem die Zellendaten abgerufen werden. |
| label | String | Der Name, der in der Spaltenüberschrift angezeigt wird. |
| pinned | ColumnPinDirection | Die Pin-Ausrichtung der Spalte (links, rechts, automatisch). |
| sortable | boolean | Wenn true, kann die Spalte sortiert werden. |
| sort | SortDirection | Die Sortierreihenfolge der Spalte. |
| type | ColumnType | Der Typ der Spalte (Text, Zahl, Boolean usw.). |
| minWidth | number | Die minimale Breite der Spalte in Pixeln. |