In Nintex Formularen Regeln für Steuerelemente vom Typ «verwaltete Metadaten» erstellen

Ein blauer Hintergrund mit dem Bild eines Bleistifts, der die Implementierung verwalteter Metadaten zeigt.

Veröffentlicht:
Aktualisiert: 3. Januar 2023

Für die Steuerelemente vom Typ «verwaltete Metadaten» können in Nintex-Formularen keine Regeln erstellt werden. Einzig mit JavaScript kann das angestrebte Verhalten in Formularen herbeigeführt werden. In diesem Blog wird anhand eines Beispiels aufgezeigt, wie dies umgesetzt wird.

Ich habe mir ein Bestellungsvorgang für ein fiktives Restaurant ausgedacht. Stellen wir uns vor, dieses Restaurant hätte alle bestellbaren Mahlzeiten in einer hierarchischen Struktur als verwaltete Metadaten aufgelistet:

Screenshot: Mahlzeiten sind in einer hierarchischen Struktur als verwaltete Metadaten aufgelistet
Verfügbare Mahlzeiten in hierarchischer Struktur

In einem Nintex-Formular können diese Mahlzeiten bestellt werden:

Bestellformular für Mahlzeitbestellung
Formular für Mahlzeitbestellung

Über das Steuerelement «Mahlzeit» vom Typ «verwaltete Metadaten» erscheint diese Liste:

Anzeigen der Liste mit den Mahlzeiten
Anzeigen der Liste mit den Mahlzeiten

In unserem Beispiel ist es auch möglich, Dienstleistungen zu den Mahlzeiten zu bestellen: zum Mitnehmen, Lieferung oder auch Dekoration. Sagen wir, wenn eine bestellte Mahlzeit eine Torte ist UND diese auch für einen speziellen Anlass passend dekoriert werden soll, geben wir den Benutzern zusätzlich die Möglichkeit, eine passende Dekorationsart auszuwählen:

Problem: Die bedingte Anzeige der Dekorationsart kriegen wir mit einer Nintex-Regel nicht hin, da für das Feld «Mahlzeit» vom Typ «verwaltete Metadaten» keine Regeln möglich sind.

Screenshot des Formulars mit dem Dropdown-Feld "Dekorationsart", welches jedoch nur unter bestimmten Umständen angezeigt werden soll.
Die Anzeige des Feldes «Dekorationsart» lässt sich nicht über eine Nintex-eigene Formular-Regel steuern

Mit JavaScript ist dies aber möglich. Wir binden den JavaScript-Code entweder in die Formular-Einstellungen unter «benutzerdefinierter JavaScript» ein:

Benutzerdefinierter JavaScript in den Formulareinstellungen
Benutzerdefinierter JavaScript in den Formulareinstellungen

oder wir binden die JavaScript-Datei in den Formular-Einstellungen unter «Fortgeschritten» ein:

Einbinden der JavaScript-Datei
Einbinden der JavaScript-Datei


Die JavaScript-Datei DecorationType.js enthält den folgenden Code:

Abbildung des JavaScript Codes, welcher die Regel umsetzt.
JavaScript für das regelbasierte Anzeigen des Feldes «Dekorationsart»

Um sicherzustellen, dass dieser Code funktioniert, müssen die Steuerelemente «Mahlzeit», «Services» und «Dekorationstyp» mit passenden CSS-Klassen versehen sein:

Zuweisen der CSS-Klassen auf der Ebene Menu
Zuweisen der CSS-Klassen auf der Ebene Mahlzeit
Zuweisen der CSS-Klasse auf der Ebene Dienstleistung
Zuweisen der CSS-Klasse auf der Ebene Dienstleistung
Zuweisen der CSS-Klasse auf der Ebene Dekorationstyp
Zuweisen der CSS-Klasse auf der Ebene Dekorationstyp

Im Bereich «DecorationTypePanel» haben wir das Etikett und das Steuerelement Dekorationstyp, da wir beides gleichzeitig verstecken oder anzeigen wollen:

Feld Dekorationsart mit Dropdown-Menu
Feld Dekorationsart mit Dropdown-Menu

Im JavaScript-Code gibt es dafür eine Zeile:

Steuerung für gemeinsames Verstecken oder Anzeigen
Steuerung für gemeinsames Verstecken oder Anzeigen

Vor dem Verstecken des Dekorationstyps wollen wir den zuvor gewählten Wert löschen, sodass in diesem Feld bei einer Änderung keine alten Werte stehen. Hier haben wir einen sogenannten Listener für die Änderung einer Mahlzeit definiert:

Listener für die Änderung einer Mahlzeit
Listener für die Änderung einer Mahlzeit

Da verwaltete Metadaten im DOM dynamisch erstellt werden, braucht es andere Ereignisse, die von dieser Änderung zeugen als für die statischen Steuerelemente. Im Fall von verwalteten Metadaten müssen wir auf das Ereignis «DOMSubtreeModified» hören.

Beim Steuerelement «Services» genügt das Ereignis «change», um eine Änderung der Checkboxen zu registrieren:

Change-Ereignis für das Steuerelement «Services»
Listener für die Änderung im Steuerelement «Services»

Da die Bedingung für die Anzeige der Dekorationsart eine Torte auszuwählen UND die Checkbox «Dekoration» anzuklicken ist, müssen wir mit oben erwähnten Listeners auf die Änderung beider Steuerelemente hören.

Die Bedingung prüfen wir jedes Mal wenn etwas in einem dieser zwei Steuerelemente ändert und zwar in der bei jeder Änderung aufgerufenen Funktion hideOrShowDecorationType():

Listeners achten auf die Änderung beider Steuerelemente
Bedingung für die Anzeige der Dekorationsart

Wenn beide Bedingungen erfüllt sind, wird das Steuerelement «Dekorationstyp» angezeigt, ansonsten nicht. So erhalten wir die Funktionalität einer Nintex-Regel mit dem Steuerelement vom Typ «verwaltete Metadaten».

Das Einzige, was wir mit JavaScript nicht so einfach hinkriegen ist das Zusammenklappen der Steuerelemente. Nintex-Regeln lösen eine ganze Kaskade an Funktionen, die diesen Effekt zustande bringen. Um dies mit JavaScript auch nachbilden zu können, müssten wir uns etwas mehr mit der internen Funktionsweise der Nintex-Regeln auseinandersetzen.

Beitrag teilen

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

IOZ_LOGO_weiss

Profis für M365-Intranets & digitale Arbeitsplätze, Power Apps, Power Automate Workflows, sowie Managementsysteme.

Angebote

Angebotsübersicht

Nach oben scrollen