Scripting Teilformulare
Siehe JavaScript und FormCalc Scripting im LiveCycle Designer.
Teilformulare sind ein mächtiges Objekt, um Objekte zu strukturieren, das Layout zu bestimmen und sie können auch als Tabellen genutzt werden.
Tabellenzeile ausblenden
- Wird ein Teilformular als Tabelle genutzt, können in Abhängigkeit von Werten Zeilen der Tabelle ausgeblendet werden.
- Angenommen es gibt eine Tabelle/Teilformular "Sitzplaetze" mit einem untergeordneten Feld "Reserviert", dann sollen nur die Zeilen dargestellt werden, wo die Sitzplätze reserviert sind.
Das Coding wird beim Feld "Reserviert" beim Event "form:ready" angelegt.
Teilformular ausblenden, Scripting im Feld im Teilformular
Lösung mit JavaScript
if (this.rawValue == null || this.rawValue == 0) //Wenn Feld "Reserviert" nicht gefüllt ist { this.parent.presence = "hidden"; //Dann blende Zeile der Tabelle/ }
Lösung mit FormCalc
if ($ == null | $ == 0) then $.parent.presence = "hidden" endif
Teilformular ausblenden, Scripting im Teilformular
Lösung mit JavaScript
if (this.Reserviert.rawValue == "X") //Wenn Bedingung zutrifft { this.presence = "hidden"; //Dann blende Zeile der Tabelle/ }
Lösung mit FormCalc
if ($.Reserviert.rawValue == "X") then $.presence = "hidden" endif
Bedingte Seitenumbrüche
Es soll ein Seitenumbruch erzeugt werden, wenn eine neue Sitzklasse im Teilformular "Sitzplaetze" durch den veränderten Inhalt des Feldes "Sitzklasse" ersichtlich ist.
- Beim Teilformular in der Palette "Objekt" den Reiter "Paginierung" markieren.
- Einen bedingten (Seiten-)Umbruch einfügen über die Schaltfläche "Bearbeiten".
- auf das "+" klicken
- als Sprache "JavaScript" wählen
- Als Reaktion auf das "true" wird der Umbruch auf "Vor" eingestellt und "Anfang des nächsten Inhaltsbereichs".
if (this.resolveNode("Sitzplaetze[-1].Sitzklasse) != null) //mindestens 1 Buchung in einer Klasse { //Prüfung Ungleichheit Sitzklasse vorherigen Datensatz mit aktuellem Datensatz this.resolveNode("Sitzplaetze[-1].Sitzklasse").rawValue != Sitzplaetze.Sitzklasse.rawValue }
Der Code liefert nun ein "true" für einen Seitenumbruch, bzw. "false" für eine Ausgabe ohne Seitenumbruch und löst den Seitenumbruch aus.
Felder berechnen
Feld in Abhängigkeit anderer Felder
Es ist sehr einfach möglich Felder innerhalb eines wiederholenden Teilformulars in Abhängigkeit von anderen Feldern zu berechnen.
Angenommen das Teilformular Sitzplaetze hat die Felder "Nettopreis" und "Steuer". Nun möchte man ein Feld "Bruttopreis" berechnen, was aus dem Kontext nicht geliefert wird.
Man geht in das Feld "Bruttopreis" unter dem Teilformular "Sitzplaetze" und legt das Coding an mit dem Event "form:ready".
this.rawValue = Nettopreis.rawValue + Steuer.rawValue; //JavaScript
oder
$ = Nettopreis + Steuer //FormCalc
Summe eines Feldes einer Tabelle berechnen
Summe eines Feldes einer Tabelle berechnen
Literatur
- Adobe LiveCycle® Designer ES2 und SAP Interactive Forms: Scripting für Nicht-Programmierer, S. 130ff., von Ulrich Bähr