Zum Hauptinhalt springen

Reichhaltige Inhalte und clientseitige Darstellung

ChatGPT öffnen

Tabellen in webforJ sind ebenfalls konfigurierbar und nutzen die folgenden Werkzeuge, um reichhaltige Inhalte in den Zellen anzuzeigen. Dazu gehören interaktive Komponenten oder formatierte Daten innerhalb der Tabellenzellen.

Diese Elemente werden clientseitig gerendert, was bedeutet, dass der Prozess zur Erstellung und Anzeige von reichhaltigen Inhalten direkt im Browser erfolgt, unter Verwendung von JavaScript nur bei Bedarf, was die Leistung von Anwendungen, die die Table verwenden, erhöht.

Lodash-Renderer

Renderer bieten einen leistungsstarken Mechanismus zur Anpassung der Art und Weise, wie Daten innerhalb einer Table angezeigt werden. Die Hauptklasse, Renderer, ist dafür konzipiert, erweitert zu werden, um benutzerdefinierte Renderer basierend auf Lodash-Vorlagen zu erstellen, die dynamische und interaktive Inhaltsdarstellung ermöglichen.

Lodash-Vorlagen ermöglichen das Einfügen von HTML direkt in die Tabellenzellen, was sie äußerst effektiv für das Rendern komplexer Zellendaten in einer Table macht. Dieser Ansatz ermöglicht die dynamische Generierung von HTML basierend auf Zellendaten und erleichtert damit reichhaltige und interaktive Inhalte in den Tabellenzellen.

Lodash-Syntax

Der folgende Abschnitt skizziert die Grundlagen der Lodash-Syntax. Während dies keine umfassende Übersicht ist, kann sie als Ausgangspunkt zur Verwendung von Lodash innerhalb der Table-Komponente dienen.

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, der Schleifen, Bedingungen und mehr zulässt.
  • <%- ... %> - Entzieht HTML-Inhalte, um sicherzustellen, dass interpolierte Daten vor HTML-Injection-Angriffen geschützt sind.

Beispiele mit Zellendaten:

1. Einfache Wertinterpolation: Direkt den Wert der Zelle anzeigen.

<%= cell.value %>

2. Bedingte Darstellung: Verwenden Sie JavaScript-Logik, um Inhalte bedingt darzustellen.

<% if (cell.value > 100) { %> 'Hoch' <% } else { %> 'Normal' <% } %>

3. Kombinieren von Datenfeldern: Inhalte unter Verwendung mehrerer Datenfelder aus der Zelle darstellen.

<%= cell.row.getValue('firstName') + ' ' + cell.row.getValue('lastName') %>

4. HTML-Inhalte entziehen: Sicheres Rendern von benutzergenerierten Inhalten.

Der Renderer hat Zugriff auf detaillierte Zell-, Zeilen- und Spalteneigenschaften auf der Clientseite:

TableCell-Eigenschaften:

EigenschaftTypBeschreibung
columnTableColumnDas zugehörige Spaltenobjekt.
firstbooleanGibt an, ob die Zelle die erste in der Zeile ist.
idStringDie Zell-ID.
indexintDer Index der Zelle innerhalb ihrer Zeile.
lastbooleanGibt an, ob die Zelle die letzte in der Zeile ist.
rowTableRowDas zugehörige Zeilenobjekt für die Zelle.
valueObjectDer Rohwert der Zelle, direkt aus der Datenquelle.

TableRow-Eigenschaften:

EigenschaftTypBeschreibung
cellsTableCell[]Die Zellen innerhalb der Zeile.
dataObjectDie vom Anwender bereitgestellten Daten für die Zeile.
evenbooleanGibt an, ob die Zeile eine gerade Zahl hat (zu Styling-Zwecken).
firstbooleanGibt an, ob die Zeile die erste in der Tabelle ist.
idStringEindeutige ID für die Zeile.
indexintDer Zeilenindex.
lastbooleanGibt an, ob die Zeile die letzte in der Tabelle ist.
oddbooleanGibt an, ob die Zeile eine ungerade Zahl hat (zu Styling-Zwecken).

TableColumn-Eigenschaften:

EigenschaftTypBeschreibung
alignColumnAlignmentDie Ausrichtung der Spalte (links, Mitte, rechts).
idStringDas Feld des Zeilenobjekts, aus dem die Zellendaten abgerufen werden.
labelStringDer Name, der im Spaltenkopf angezeigt werden soll.
pinnedColumnPinDirectionDie Fixierrichtung der Spalte (links, rechts, automatisch).
sortablebooleanWenn wahr, kann die Spalte sortiert werden.
sortSortDirectionDie Sortierreihenfolge der Spalte.
typeColumnTypeDer Typ der Spalte (Text, Zahl, Boolean usw.).
minWidthnumberDie minimale Breite der Spalte in Pixeln.

Verfügbare Renderer

Während benutzerdefinierte Renderer erstellt werden können, stehen mehrere vorkonfigurierte Renderer zur Verwendung innerhalb einer Table zur Verfügung. Die folgenden sind für Entwickler sofort einsatzbereit, ohne dass ein benutzerdefinierter Renderer erstellt werden muss:

  • ButtonRenderer - Renderer für einen WebforJ-Button.
  • NativeButtonRenderer - Renderer für einen nativen HTML-Button.
  • ElementRenderer - Die Basisklasse für alle Renderer, die ein HTML-Tag mit Inhalt rendern.
  • VoidElementRenderer - Die Basisklasse für alle Renderer, die ein leeres Element oder ein HTML-Tag ohne Inhalt rendern.
  • IconRenderer - Renderer für ein Icon - siehe dies Artikel für weitere Informationen zu Icons.

Renderer erlauben es, auch benutzerdefinierte Ereignisse zu schreiben, indem jeder der unterstützten Basisrenderer erweitert wird. Derzeit kommen Renderer mit einem RendererClickEvent, das von Entwicklern genutzt werden kann.

Im Folgenden finden Sie ein Beispiel für eine Table, die Renderer verwendet, um reichhaltige Inhalte darzustellen:

Code anzeigen