Normalerweise muss man in der UUX nur eine Checkbox setzen, um Felder als Pflichtfeld zu markieren. Aber bei Boolean-Feldern selber (Checkboxen) gibt es diese Eigenschaft nicht.
Was tut man also, wenn man z.B. in einem Bereitstellungsformular eines Services des Service Katalogs eine Checkbox, benötigt, à la „Ich habe alles gelesen und verstanden“?
Die Lösung ist eine Meldung im Dialog auszugeben, wenn das Feld nicht mit „True“ befüllt ist. Hier erfährst du, wie das geht.
Hier haben wir übrigens auch eine Anleitung für Pflichtfelder in Legacy-Dialogen.
Dialog im Layout Designer anpassen
Öffne das entsprechende Formular zuerst im Layout Designer.

Kontext-Variable anlegen
Nun legen wir uns eine Boolesche Kontext-Variable an und invertieren den Wert der zu prüfenden Variable:

Meldung im Dialog hinzufügen
Wir brauchen nun ein neues Control, mit dem wir eine Fehlermeldung ausgeben können, die verhindert, dass man den Dialog speichern kann. Dafür benötigen wird das Control „Meldung“.

Meldung konfigurieren
Gut, da wir vorher unsere Variabel erstellt haben, können wir diese nutzen, um eine Meldung aktiv zu schalten (Da diese Variable ja „Wahr“ ist, wenn unsere Checkbox es nicht ist)

Als Meldung können wir noch einen passenden Text eingeben, den Nachrichtentyp auf „Error“ stellen und das war’s dann auch schon!
Fertig

Schon wird unsere Checkbox geprüft und das Formular lässt sich ohne nicht abschicken! Lass mir gerne ein Kommentar da, ob es bei dir geklappt hat!
Ich habe einen Fall, wo ich 3 Boolean Felder habe, wo NUR EINES angehakt werden dürfte.
Sprich: Ist ein Boolean angehakt, können die anderen Beiden nicht angehakt werden.
Ich kann das natürlich über eine Pickup/Dropdown lösen, mich würde aber schon interessieren, wie ich das mit mehreren boolean umsetzen kann, so dass nur ein boolean ausgewählt werden kann
Hi Andreas,
schön, wieder von dir zu lesen 😀
Das sollte relativ einfach über einen Boolesche Javascript variable gehen, die in der Meldung hinterlegt wird und diese anzeigt, wenn keines der Bool-Felder markiert ist:
if (mybool.$value || mysecondbool.$value || mythirdbool.$value){
console.log("Ein Feld ist angehakt");
return false;
}
console.log("KEIN Feld ist angehakt");
return true;
Hi Simon,
d.h. diese Variable nutze ich dann für die Sichtbarkeit? Sprich: Die Variable wird bei allen bool Feldern in der Sichtbarkeit hinterlegt?
Hab noch mal genau dein Kommentar gelesen 😉 Die Meldung würde zwar anzeigen, wenn KEIN Feld markiert ist, aber es könnten auch ZWEI Felder markiert werden, oder? Genau dies soll ja nicht möglich sein. Sprich: Ist ein Feld markiert, dann sollen die anderen beiden Felder schreibgeschützt sein.
Ach so, da habe ich wohl nicht genau genug gelesen^^
Ja, exakt. Der code oben ist für die „Meldung“ und stellt gewissermaßen sicher, dass mindestens eines angehakt ist (sonst erscheint die Meldung)
Damit nur eines der 3 Bool-Felder angehakt werden kann und die anderen beiden unsichtbar werden, müsstest du dir für jede Checkbox eine eigene Boolesche-Kontextvariable bauen, in der du jeweils die anderen beiden Felder beobachtest.
Also z.B. für mybool (Die Variable aus meinem Beispiel von oben):
Diese Kontext-Variable dann bei der Sichtbarkeit hinterlegen, fertig 🙂
Alternativ kannst du auch return true und false vertauschen, und die Eigenschaft „schreibgeschützt“ verwenden, das ist Geschmackssache
Beste Grüße und schönes Wochenende 🙂