Anpassung
Sie können das Aussehen, die Struktur und die Funktionalität der Toolbar, des Menüs und des Kontextmenüs anpassen sowie ein benutzerdefiniertes Nur-Lesen-Verhalten für die Spreadsheet-Komponente definieren.
Standard- und benutzerdefinierte Icons
DHTMLX Spreadsheet verwendet standardmäßig Icons auf Basis von Material Design. Sie können jedoch bei Bedarf auch ein anderes Icon-Font-Paket verwenden. Dazu müssen Sie den gewünschten Icon-Font auf der Seite einbinden und die Icons in jedem beliebigen Bereich der Spreadsheet-Komponente verwenden: in Toolbar-Controls sowie in Menü- und Kontextmenü-Einträgen.
Sie können beispielsweise das Font Awesome Icon-Paket verwenden, indem Sie den Link zu dessen CDN nach den Quelldateien von DHTMLX Spreadsheet wie folgt einbinden:
<script type="text/javascript" src="../../codebase/spreadsheet.js"></script>
<link rel="stylesheet" href="../../codebase/spreadsheet.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css"
integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU"
crossOrigin="anonymous">
Anschließend können Sie den Namen des Icons als Wert der Eigenschaft icon im Objekt mit den Control-Parametern für Toolbar, Menü oder Kontextmenü verwenden. Weitere Details entnehmen Sie den folgenden Abschnitten.
Control-Typen und -Operationen
Typen
Sie können die folgenden Control-Typen hinzufügen: button, menuItem, separator und spacer.
Wie die anderen Controls der Standard-Toolbar sind auch die Controls Textfarbe und Hintergrundfarbe sowie das Control Rahmenfarbe im Popup Rahmen vom Typ navItem. Sie zeichnen die aktuelle Farbe über die Eigenschaft html, beziehen ihren zugänglichen Namen aus der Eigenschaft value, zum Beispiel "Text color: dark gray", und öffnen ein Farb-Popup. Spreadsheet aktualisiert beide Eigenschaften der Controls Textfarbe und Hintergrundfarbe, wenn sich die aktive Zelle ändert, und des Controls Rahmenfarbe, wenn eine Rahmenfarbe gewählt wird.
Das button-Objekt hat folgende Eigenschaften:
type- der Typ eines Buttons, setzen Sie diesen auf "button"id- die ID eines Buttonsicon- der Name eines Icons aus dem verwendeten Icon-Fonthotkey- der Name des Hotkeys für einen Buttonvalue- der Wert eines Buttonstooltip- der Tooltip eines ButtonstwoState- das Flag, das bestimmt, ob ein Button in zwei Zuständen verwendet werden kannactive- der Zustand eines Buttons:true- aktiv,false- inaktiv
Das menuItem-Objekt hat folgende Eigenschaften:
type- der Typ eines Menüeintrags, setzen Sie diesen auf "menuItem"id- die ID eines Menüeintragsicon- der Name eines Icons aus dem verwendeten Icon-Fonthotkey- der Name des Hotkeys für einen Menüeintragvalue- der Wert eines Menüeintragschilds- ein Array von untergeordneten Controls (beachten Sie, dass alle untergeordneten Elemente den TypmenuItemhaben müssen)
Die Datensammlungs-API der Toolbar, des Menüs und des Kontextmenüs ermöglicht Ihnen die Verwaltung von Controls: Sie können benutzerdefinierte Controls hinzufügen, nicht benötigte entfernen oder vorhandene aktualisieren, beispielsweise deren Icons ändern.
Controls hinzufügen
Um ein neues Control hinzuzufügen, verwenden Sie die Methode spreadsheet.{name}.data.add(). Diese akzeptiert folgende Parameter:
config- (object) ein Objekt mit der Control-Konfigurationindex- (number) der Index der Position, an der das Control eingefügt werden sollparent- (string) die ID eines übergeordneten Controls (für den TypmenuItem)
Für einen Button:
// spreadsheet.menu.data.add / spreadsheet.contextMenu.data.add
spreadsheet.toolbar.data.add({
type: "button", // "menuItem"
id: "button-id",
tooltip: "Some tooltip",
icon: "icon-name"
}, 2);
Für ein menuItem:
// spreadsheet.menu.data.add / spreadsheet.contextMenu.data.add
spreadsheet.toolbar.data.add({
type: "menuItem",
id: "menuitem-id",
value: "Some value",
}, -1, "parent-id");
Controls aktualisieren
Sie können das Icon eines Controls und andere Konfigurationsoptionen über die Methode spreadsheet.{name}.data.update() ändern. Diese nimmt zwei Parameter entgegen:
- die ID des Controls
- ein Objekt mit der neuen Konfiguration des Controls
// spreadsheet.menu.data.update / spreadsheet.contextMenu.data.update
spreadsheet.toolbar.data.update("add", {
icon: "icon_name"
});
Controls löschen
Um ein Control zu entfernen, verwenden Sie die Methode spreadsheet.{name}.data.remove(). Übergeben Sie der Methode die ID des zu entfernenden Controls:
// spreadsheet.menu.data.remove / spreadsheet.contextMenu.data.remove
spreadsheet.toolbar.data.remove("control-id");
Toolbar
Standard-Controls
Die Standard-Toolbar enthält folgende Control-Blöcke:
- den Rückgängig-Block
- den Rückgängig-Button (id: "undo")
- den Wiederholen-Button (id: "redo")
- den Farben-Block
- den Textfarbe-Button (id: "color")
- den Hintergrundfarbe-Button (id: "background")
- den Schrift-Block
- die Schriftgröße-Combobox (id: "font-size")
- den Dekoration-Block
- den Fett-Button (id: "font-weight-bold")
- den Kursiv-Button (id: "font-style-italic")
- den Unterstrichen-Button (id: "text-decoration-underline")
- den Durchgestrichen-Button (id: "text-decoration-line-through")
- den Ausrichten-Block
- den Horizontal ausrichten-Unterblock
- den Links-Button (id: "halign-left")
- den Mitte-Button (id: "halign-center")
- den Rechts-Button (id: "halign-right")
- den Vertikal ausrichten-Unterblock
- den Oben-Button (id: "valign-top")
- den Mitte-Button (id: "valign-center")
- den Unten-Button (id: "valign-bottom")
- den Textumbruch-Unterblock
- den Abschneiden-Button (id: "multiline-clip")
- den Umbrechen-Button (id: "multiline-wrap")
- den Horizontal ausrichten-Unterblock
- den Zelle-Block
- den Rahmen-Button (id: "border")
- den Verbinden/Trennen-Button (id: "merge")
- den Format-Block
- das Format-menuItem (id: "format")
- den Aktionen-Block
- den Filter-Button (id: "filter")
- den Link einfügen-Button (id: "link")
Es ist auch möglich, folgende Blöcke hinzuzufügen:
- den Sperren-Block
- den Sperren-Button (id: "lock")
- den Leeren-Block
- das Gruppe leeren-menuItem (id: "clear-group")
- das Wert leeren-menuItem (id: "clear-value")
- das Stile leeren-menuItem (id: "clear-styles")
- das Alles leeren-menuItem (id: "clear-all")
- das Gruppe leeren-menuItem (id: "clear-group")
- den Zeilen-Block
- den Zeile hinzufügen-Button (id: "add-row")
- den Zeile entfernen-Button (id: "remove-row")
- den Zeilen einblenden-Button (id: "unfreeze-rows")
- den Bis Zeile [id] fixieren-Button (id: "freeze-rows")
- den Zeile(n) [id] ausblenden-Button (id: "hide-rows")
- den Spalten-Block
- den Spalte hinzufügen-Button (id: "add-col")
- den Spalte entfernen-Button (id: "remove-col")
- den Spalten einblenden-Button (id: "unfreeze-cols")
- den Bis Spalte [id] fixieren-Button (id: "freeze-cols")
- den Spalte(n) [id] ausblenden-Button (id: "hide-cols")
- den Datei-Block
- das Exportieren-menuItem (id: "export")
- das "Microsoft Excel(.xlsx)"-menuItem (id: "export-xlsx")
- das Importieren-menuItem (id: "import")
- das "Microsoft Excel(.xlsx)"-menuItem (id: "import-xlsx")
- das Exportieren-menuItem (id: "export")
- den Hilfe-Block
- den Hilfe-Button (id: "help")
Controls hinzufügen
Im folgenden Beispiel wird ein neuer Button zur Toolbar hinzugefügt:
spreadsheet.toolbar.data.add({
type: "button",
icon: "dxi dxi-delete",
tooltip: "Remove all",
id: "remove-all"
});
Verwandtes Beispiel: Spreadsheet. Benutzerdefinierter Toolbar-Button
Im folgenden Beispiel wird eine neue menuItem-Option zum Control "clear-group" hinzugefügt:
spreadsheet.toolbar.data.add({
type: "menuItem",
id: "clear-value2",
value: "Clear value2"
}, -1, "clear-group");
Es gibt eine vereinfachte Schreibweise zum Hinzufügen eines menuItems, wenn die genaue Position des neuen Eintrags nicht relevant ist:
spreadsheet.toolbar.data.add({
type: "menuItem",
id: "clear-value2",
value: "Clear value2",
parent: "clear-group"
});
Controls aktualisieren
Im folgenden Beispiel werden die Standard-Icons der Toolbar-Buttons "Rückgängig"/"Wiederholen" durch Font-Awesome-Icons ersetzt:
spreadsheet.toolbar.data.update("undo", { icon: "fa fa-undo" });
spreadsheet.toolbar.data.update("redo", { icon: "fa fa-redo" });
Verwandtes Beispiel: Spreadsheet. Benutzerdefinierte Toolbar-Icons
Controls löschen
Im folgenden Beispiel wird der "Rückgängig"-Button aus der Toolbar entfernt:
spreadsheet.toolbar.data.remove("undo");
Benutzerdefinierte Schriftgröße
Sie können die Liste der verfügbaren Schriftgrößen im Schrift-Toolbar-Block neu definieren, indem Sie die vorhandenen Einträge aus der "font-size"-Combobox entfernen und eigene hinzufügen:
const FONT_SIZES = [8, 10, 12, 14, 16, 20];
const spreadsheet = new dhx.Spreadsheet("spreadsheet_container", {
// Konfigurationsoptionen
});
spreadsheet.toolbar.data.removeAll("font-size");
spreadsheet.toolbar.data.add(
FONT_SIZES.map(size => ({ value: size, id: `font-size-${size}` })),
-1,
"font-size"
);
spreadsheet.parse(dataset);
Verwandtes Beispiel: Spreadsheet. Benutzerdefinierte Schriftgröße festlegen
Menü
Standard-Controls
Das Standard-Menü hat folgende Struktur:
- das Datei-menuItem (id: "edit")
- das Importieren als...-menuItem (id: "import")
- das "Microsoft Excel(.xlsx)"-menuItem (id: "import-xlsx")
- das Herunterladen als...-menuItem (id: "download")
- das "Microsoft Excel(.xlsx)"-menuItem (id: "export-xlsx")
- das Importieren als...-menuItem (id: "import")
- das Bearbeiten-menuItem (id: "edit")
- das Rückgängig-menuItem (id: "undo")
- das Wiederholen-menuItem (id: "redo")
- der Trenner
- das Fixieren-menuItem (id: "freeze")
- das Spalten einblenden-menuItem (id: "unfreeze-cols")
- das Bis Spalte [id] fixieren-menuItem (id: "freeze-cols")
- der Trenner (id: "freeze-sep")
- das Zeilen einblenden-menuItem (id: "unfreeze-rows")
- das Bis Zeile [id] fixieren-menuItem (id: "freeze-rows")
- das Sperren-menuItem (id: "lock")
- der Trenner
- das Leeren-menuItem (id: "clear")
- das Wert leeren-menuItem (id: "clear-value")
- das Stile leeren-menuItem (id: "clear-styles")
- das Alles leeren-menuItem (id: "clear-all")
- das Einfügen-menuItem (id: "insert")
- das Spalten-menuItem (id: "columns")
- das Spalte hinzufügen-menuItem (id: "add-col")
- das Spalte entfernen-menuItem (id: "remove-col")
- das Zeilen-menuItem (id: "rows")
- das Zeile hinzufügen-menuItem (id: "add-row")
- das Zeile entfernen-menuItem (id: "remove-row")
- das Link einfügen-menuItem (id: "link")
- das Spalten-menuItem (id: "columns")
- das Format-menuItem (id: "configuration")
- das Fett-menuItem (id: "font-weight-bold")
- das Kursiv-menuItem (id: "font-style-italic")
- das Unterstrichen-menuItem (id: "text-decoration-underline")
- das Durchgestrichen-menuItem (id: "text-decoration-line-through")
- der Trenner
- das Horizontal ausrichten-menuItem (id: "halign")
- das Links-menuItem (id: "halign-left")
- das Mitte-menuItem (id: "halign-center")
- das Rechts-menuItem (id: "halign-right")
- das Vertikal ausrichten-menuItem (id: "valign")
- das Oben-menuItem (id: "valign-top")
- das Mitte-menuItem (id: "valign-center")
- das Unten-menuItem (id: "valign-bottom")
- das Textumbruch-menuItem (id: "multiline")
- das Abschneiden-menuItem (id: "multiline-clip")
- das Umbrechen-menuItem (id: "multiline-wrap")
- das Format-menuItem (id: "format")
- das Verbinden/Trennen-menuItem (id: "merge")
- das Daten-menuItem (id: "data")
- das Datenvalidierung-menuItem (id: "validation")
- das Suchen-menuItem (id: "search")
- das Filter-menuItem (id: "filter")
- das Sortieren-menuItem (id: "sort")
- das A bis Z sortieren-menuItem (id: "asc-sort")
- das Z bis A sortieren-menuItem (id: "desc-sort")
- das Hilfe-menuItem (id: "help")
Controls hinzufügen
Im folgenden Beispiel wird ein neues menuItem zum Menü hinzugefügt:
spreadsheet.menu.data.add({
id: "validate",
value: "Validate",
childs: [
{
id: "isNumber",
value: "Is number"
},
{
id: "isEven",
value: "Is even number"
}
]
});

Verwandtes Beispiel: Spreadsheet. Menü-Daten
Controls aktualisieren
Im folgenden Beispiel werden die Standard-Icons der menuItems "Rückgängig"/"Wiederholen" durch Font-Awesome-Icons ersetzt:
spreadsheet.menu.data.update("undo", { icon: "fa fa-undo" });
spreadsheet.menu.data.update("redo", { icon: "fa fa-redo" });
![]()
Controls löschen
Im folgenden Beispiel wird das menuItem "Rückgängig" aus dem Menü entfernt:
spreadsheet.menu.data.remove("undo");
Kontextmenü
Standard-Controls
Das Standard-Kontextmenü hat folgende Struktur:
- das Sperren-menuItem (id: "lock")
- das Leeren-menuItem (id: "clear")
- das Wert leeren-menuItem (id: "clear-value")
- das Stile leeren-menuItem (id: "clear-styles")
- das Alles leeren-menuItem (id: "clear-all")
- das Spalten-menuItem (id: "columns")
- das Spalte hinzufügen-menuItem (id: "add-col")
- das Spalte entfernen-menuItem (id: "remove-col")
- das An Daten anpassen-menuItem (id: "fit-col"), angezeigt im Spaltenmenü und bei Auswahl ganzer Spalten
- das Spaltenbreite-menuItem (id: "col-width")
- der Trenner
- das Spalten einblenden-menuItem (id: "unfreeze-cols")
- das Bis Spalte [id] fixieren-menuItem (id: "freeze-cols")
- das Spalten anzeigen-menuItem (id: "show-cols")
- das Spalte(n) [id] ausblenden-menuItem (id: "hide-cols")
- das Zeilen-menuItem (id: "rows")
- das Zeile hinzufügen-menuItem (id: "add-row")
- das Zeile entfernen-menuItem (id: "remove-row")
- das Zeilenhöhe-menuItem (id: "row-height")
- der Trenner
- das Zeilen einblenden-menuItem (id: "unfreeze-rows")
- das Bis Zeile [id] fixieren-menuItem (id: "freeze-rows")
- das Zeilen anzeigen-menuItem (id: "show-rows")
- das Zeile(n) [id] ausblenden-menuItem (id: "hide-rows")
- das Sortieren-menuItem (id: "sort")
- das A bis Z sortieren-menuItem (id: "asc-sort")
- das Z bis A sortieren-menuItem (id: "desc-sort")
- das Link einfügen-menuItem (id: "link")
- das Filter öffnen-menuItem (id: "open-filter"), angezeigt, wenn die aktive Zelle das Filtersymbol enthält
Controls hinzufügen
Im folgenden Beispiel wird ein neues menuItem zum Kontextmenü hinzugefügt:
spreadsheet.contextMenu.data.add({
icon: "mdi mdi-eyedropper-variant",
value: "Paint format",
id: "paint-format"
});

Verwandtes Beispiel: Spreadsheet. Kontextmenü
Controls aktualisieren
Im folgenden Beispiel wird das Standard-Icon des menuItems "Sperren" durch ein Font-Awesome-Icon ersetzt:
spreadsheet.contextMenu.data.update("lock", { icon: "fa fa-key" });
![]()
Controls löschen
Im folgenden Beispiel wird das menuItem "Sperren" aus dem Kontextmenü entfernt:
spreadsheet.contextMenu.data.remove("lock");
Benutzerdefinierter Nur-Lesen-Modus
Neben der Anwendung des Nur-Lesen-Modus auf die gesamte Spreadsheet-Komponente können Sie bestimmte Operationen mithilfe von Events blockieren, deren Namen mit before beginnen, zum Beispiel:
const spreadsheet = new dhx.Spreadsheet("spreadsheet_container", {});
spreadsheet.events.on("beforeEditStart", function(){
return false;
});
spreadsheet.events.on("beforeAction", function(actionName){
if (actionName === "setCellValue" || actionName === "setCellStyle") {
return false;
}
});
spreadsheet.parse(data);
Verwandtes Beispiel: Spreadsheet. Benutzerdefinierter Nur-Lesen-Modus