Tipps & Tricks - Dynamische Eingabeseiten mit Requestwert steuern
Dieser Beitrag zeigt, wie man eine
Eingabeseite
mit Requestwerten dynamisch gestalten kann. Kenntnisse im
Expert-Modus
sind dabei von Vorteil. Die Beispielapplikation können Sie
hier
herunterladen. Entpacken Sie die Downloaddatei. Anschließend können Sie die enthaltene
Datei "tipps-tricks-dynamische-eingabeseiten-mit-requestwert-steuern.lax"
wie gewohnt
importieren. Aktivieren Sie die
Experten-Optionen, damit alle Dialoge, die in diesem Beispiel genannt werden,
erreichbar sind.
Hier sehen Sie die Eingabeseite der Beispiel-Applikation. Das Feld "Ort" ist ein
Pflichtfeld.
Die Überschrift dieser Seite soll dynamisch erzeugt werden.
Auf der Seite "Übersicht" sind die Schaltflächen "Interner Termin" und "Externer Termin"
so konfiguriert, dass Sie die Terminart "intern" bzw. "extern" per Request an die Eingabeseite
weitergeben, wenn ein neuer Termin mit Klick auf eine dieser Schaltflächen angelegt wird.
Dieses Verhalten wird mit dem
Expertattribut "rq_custType"
gesteuert.
Bei der Schaltfläche "Interner Termin" hat rq_custType den Wert "intern", bei der Schaltfläche "Externer Termin"
den Wert "extern". Der Name für das Attribut ist frei wählbar - das Präfix "rq_" sorgt dabei dafür,
dass das Attribut als Requestwert interpretiert und entsprechend an die aufgerufene Seite weitergegeben wird.
Für das automatische Eintragen der Terminart auf der Eingabeseite wird das Expertattribut "customdefault"
verwendet. Mit dem folgenden Wert wird der Requestwert ausgelesen:
$Request.get('rq_custType')
Der Ort soll nur dann auf der Eingabeseite angezeigt werden, wenn es sich um einen externen Termin handelt.
Dieses Verhalten wird mit einer
Gruppierung,
die bedingt angezeigt wird, bewirkt. Im
Eigenschaftendialog der Gruppierung
ist auf dem
Reiter Optionen die
bedingte Anzeige aktiviert.
Hier ist das folgende Skript hinterlegt:
#if($Request.get('rq_custType') == 'intern')
#set($show_simplegroupAC182D08 = false)
#elseif($Request.get('rq_custType') == 'extern')
#set($show_simplegroupAC182D08 = true)
#end
Falls der Name Ihrer Gruppierung abweicht, muss er im Skript angepasst werden.
Das Skript bewirkt, dass die Gruppierung, die das Feld "Ort" enthält, nicht angezeigt wird,
wenn der Requestwert den Wert "intern" hat. Mit dem Wert "extern" wird die Gruppierung eingeblendet.
Wird die Eingabeseite im Browser über das Applikationsmenü "Eingabeseite" aufgerufen,
werden keine Requestwerte übermittelt. Weil die Terminart somit nicht automatisch gefüllt
werden kann, sollen alle Elemente bis auf die Überschrift auf der Eingabeseite ausgeblendet
werden. Dazu werden die Elemente gruppiert und das folgende Skript in der bedingten Anzeige
der Gruppierung hinterlegt:
#if($Request.get('rq_custType') || $DC.getRecId() != -1)
#set($show_simplegroup9BA104CE = true)
#else
#set($show_simplegroup9BA104CE = false)
#end
Mit der Datensatz-Id -1 wird hier gesteuert, dass die Gruppierung eingeblendet wird,
wenn ein bestehender Datensatz aufgerufen wird - z.B. über die Ansichtstabelle auf der Seite "Übersicht".
Bei neuen oder noch nicht gespeicherten Datensätzen hat die Datensatz-Id den Wert -1.
Die dynamische Anzeige der Seitenüberschrift wird mit dem Element
Statischer Text,
das auf dem
Reiter Optionen
die Einstellung "Programmierung, nur Standardsprache" hat, bewirkt.
Hier ist das folgende Skript eingetragen:
## Seitenüberschrift per VTL bestimmen
#if($Request.get('rq_custType') == 'intern')
Interner Termin
#elseif($Request.get('rq_custType') == 'extern')
Externer Termin
#elseif($DC.getRecId() != -1)
Termin überarbeiten
#else
Sie haben diese Seite über einen unzulässigen Link aufgerufen
#end
Damit zeigt sich der Seitentitel wie folgt:
-
Bei der Anlage neuer Datensätze über die Schaltflächen auf der Seite "Übersicht" mit
"Interner Termin" bzw. "Externer Termin"
-
Beim Aufruf bestehender Datensätze über die Ansichtstabelle auf der Seite "Übersicht" mit
"Termin überarbeiten"
-
Beim Aufruf über das Applikationsmenü mit
"Sie haben diese Seite über einen unzulässigen Link aufgerufen"
Damit der Ort bei bestehenden Datensätzen bearbeitet werden kann, kann das Skript in der
bedingten Anzeige der Gruppierung um das Feld "Ort" und dessen Titel auf der Eingabeseite
wie folgt angepasst werden:
#if($Request.get('rq_custType') == 'intern')
#set($show_simplegroupAC182D08 = false)
#elseif($Request.get('rq_custType') == 'extern' || $DC.getValueHolder('textcontrol4A4C39CA').getValue() == 'extern')
#set($show_simplegroupAC182D08 = true)
#end
Im Skript wird dann der Wert im Feld "Terminart" geprüft und die Gruppierung entsprechend behandelt.
Achten Sie darauf, dass Sie auch hier evtl. wieder den Namen der Gruppierung oder des Feldes "Terminart"
anpassen müssen.