Eigenschaft ENTRY
Den selektierten Wert einer Auswahlliste verwenden
FirstSpirit kennt zwei Arten von komplexen Auswahllisten (in denen genau ein Eintrag ausgewählt werden kann):
Bei den „Werten“ dieser Auswahllisten, handelt es sich um komplexe Objekte (vom Datentyp OPTION).
Mithilfe der Eigenschaft ENTRY kann eine textuelle Version des selektierte Wertes aus einer Auswahlliste in einem Formular ausgelesen und über ein dynamisches Formular ausgewertet werden. So können beispielsweise Regeln definiert werden, die abhängig vom Wert, der innerhalb der Auswahlliste ausgewählt wurde, weitere Eingabekomponenten im Formular ein- oder ausblenden.
Der Ausdruck <PROPERTY source='combobox' name='ENTRY'/> kann im Bereich Wertermittlung der Regeldefinition (oder für die Definition einer Vorbedingung) eingesetzt werden und liefert eine textuelle Version des Wertes aus einer Auswahlliste (nicht den Wert selbst).
Zur Definition einer vollständigen Bedingung für eine wertabhängige Validierung, also z. B.:
- „Wurde der Eintrag A in der Auswahlliste ausgewählt?“ oder
- „Wurde ein Eintrag ungleich A in der Auswahlliste ausgewählt?“
muss zusätzlich ein textueller Vergleichswert (z. B. <TEXT>A</TEXT>) und der Operator <EQUAL/> angegeben werden. In diesem Fall liefert der Ausdruck einen Booleschen Wert zurück.
Werte, die innerhalb einer Eingabekomponente vom Typ CMS_INPUT_CHECKBOX selektiert werden, können nicht über die Eigenschaft ENTRY ausgewertet werden. |
Soll die Wertemenge einer CMS_INPUT_CHECKBOX, die dynamisch über eine Datenbank-Abfragen (Query) gefüllt wird, über eine Regel ausgelesen oder gesetzt werden, so muss im <PROPERTY/>-Tag dem Bezeichner der Datenbankabfrage (FILTERPARAM) das Präfix „query“ vorangestellt werden Erläuterung siehe: Sonderfall - Dynamische Werte mithilfe einer Datenbank-Abfrage setzen Beispiele siehe: Gericht / Lieferant und Stellvertreter ermitteln |
Den selektierten Wert einer dynamisch gefüllten Auswahlliste verwenden
Über die Eigenschaft ENTRY kann nicht nur die textuelle Version des selektierten Wertes einer Auswahlliste, sondern auch der Schlüsselwert der OPTION geliefert werden. Damit können auch Werte innerhalb von Auswahllisten, die dynamisch gefüllt werden (mithilfe des Datenelements CMS_INCLUDE_OPTIONS), über die Eigenschaft ENTRY ausgewertet werden.
Die Auswahlmenge kann z. B. mit Datensätzen aus einer Fremdtabelle, mit Projektsprachen, Ausgabekanälen, usw. gefüllt werden. Für eine Prüfung dieser Werte über ein dynamisches Formular muss eine verwertbare Schlüsselinformation vorliegen. So muss der Vorlagenentwickler beispielsweise für Datensätze (also für eine Wertemenge, die über Datensätze aus einer Fremdtabelle gefüllt wird) eine passende Schlüsselspalte angeben. Die Schlüsselspalte beim Datenelement CMS_INCLUDE_OPTIONS (Type DATABASE) wird über das optionale Tag KEY definiert (der hier üblicherweise zurückgelieferte Primärschlüssel kann für eine Verwendung in dynamischen Formularen nicht verwendet werden).
Auch für andere Typen von CMS_INCLUDE_OPTIONS kann über den passenden Schlüsselwert eine Prüfung über ein dynamisches Formular erfolgen:
- Type DATABASE: Es ist eine Prüfung auf dem Wert aus der Schlüsselspalte möglich.
- Type LANGUAGE: Es ist eine Prüfung auf das Sprachkürzel möglich.
- Type TEMPLATESET: Es ist eine Prüfung auf der UID des TemplateSets möglich.
- Type PUBLIC: Es ist eine Prüfung auf den vom entsprechenden GomIncludeValueProvider gelieferten Schlüsselwert möglich.
Beispiele
Beispiel 1) Komponenten abhängig vom selektierten Wert einer Auswahlliste ein- oder ausblenden
Das folgende Formular enthält eine Eingabekomponente „selection“ (vom Typ (CMS_INPUT_COMBOBOX)) mit der statisch definierten Auswahlmenge (0,1,2) und drei weitere Eingabekomponenten (vom Typ CMS_INPUT_TOGGLE). Über ein dynamisches Formular sollen abhängig vom selektierten Wert in der Auswahlliste, unterschiedliche Eingabekomponenten im Formular eingeblendet werden:
- Keine Auswahl = Einblenden der Eingabekomponente „st_all“
- Auswahl Wert 0 = Einblenden der Eingabekomponente „st_all“
- Auswahl Wert 1 = Einblenden der Eingabekomponente „st_all“ und „st_A“
- Auswahl Wert 2 = Einblenden der Eingabekomponente „st_all“ und „st_B“
Für die Eingabekomponente „st_all“ wird keine Regel definiert, daher wird diese Eingabekomponente im Formular immer eingeblendet. Für die Eingabekomponenten „st_A“ und „st_B“ ist innerhalb der Regeldefinition die Eigenschaft VISIBLE definiert. Das bedeutet, die Komponenten werden nur eingeblendet, wenn die Bedingung, die innerhalb der Regel definiert wurde, zutrifft. In allen anderen Fällen wird die Komponente ausgeblendet:
<RULES>
<ON_EVENT>
<WITH>
<EQUAL>
<PROPERTY source="selection" name="ENTRY"/>
<TEXT>1</TEXT>
</EQUAL>
</WITH>
<DO>
<PROPERTY source="st_A" name="VISIBLE"/>
</DO>
</ON_EVENT>
<ON_EVENT>
<WITH>
<EQUAL>
<PROPERTY source="selection" name="ENTRY"/>
<TEXT>2</TEXT>
</EQUAL>
</WITH>
<DO>
<PROPERTY source="st_B" name="VISIBLE"/>
</DO>
</ON_EVENT>
</RULES>
Beispiel 2) Prüfen eines Wertes aus einer dynamisch gefüllten Auswahlliste
Das folgende Formular enthält eine Eingabekomponente „st_combobox“ (vom Typ CMS_INPUT_COMBOBOX) mit der dynamisch gefüllten Auswahlmenge (A,B,C). Die Wertemenge wird dynamisch über Datensätze aus einer Fremdtabelle gefüllt. Über das Tag <KEY/> wird die Spalte „Name“ der Datenquelle definiert:
<CMS_INPUT_COMBOBOX name="st_combobox" hFill="yes" singleLine="no" useLanguages="no">
<CMS_INCLUDE_OPTIONS type="database">
<KEY>Name</KEY>
<TABLE>mytable</TABLE>
</CMS_INCLUDE_OPTIONS>
<LANGINFOS>
<LANGINFO lang="*" label="COMBOBOX (DB-Include)"/>
</LANGINFOS>
</CMS_INPUT_COMBOBOX>
Innerhalb der Regeldefinition kann jetzt über die Eigenschaft ENTRY auf den selektierten Wert (der innerhalb der Spalte „Name“ der Datenbanktabelle gespeichert ist) zugegriffen werden:
<RULES>
<ON_EVENT>
<WITH>
<EQUAL>
<PROPERTY source="st_combobox" name="ENTRY"/>
<TEXT>A</TEXT>
</EQUAL>
</WITH>
<DO>
<PROPERTY source="st_value_a" name="VISIBLE"/>
</DO>
</ON_EVENT>
</RULES>