# Dynamische Stichwortlisten

Ein dynamisches Stichwortfeld ist ein Feld, das mehrere Spalten darstellen kann. Typischerweise wird das Feld dynamisch gefiltert nach einem oder mehreren anderen Feldwerten. Es sieht folgendermaßen aus:

Beispiel für ein dynamisches Stichwortfeld; eine Tabelle mit Ländern und Länderkürzeln

Dynamische Stichwortlisten sind ein relativ komplexes Feature in ELO, das für die Funktionalität Scripting-Kenntnisse voraussetzt. Sie sind im ELO Java Client und dem ELO Web Client verfügbar.

Sie können Folgendes damit tun:

  • Mehrere Spalten von Daten anzeigen
  • Inhalte dynamisch abrufen (zum Beispiel: externe Datenbanken, dynamisch berechnete Daten, ELO Scripte...)
  • Daten können gefiltert werden, nicht nur in einem Feld, sondern auch abhängig von beliebig anderen Feldern (zum Beispiel: Was der Benutzer eingegeben hat und eine Kategorie, die der Benutzer zuvor ausgewählt hat)
  • Füllen weiterer anderer Felder mit Eintragsauswahl (inklusive der Nur-Lesen-Felder)

Die Verwendung einer dynamischen Stichwortliste wird direkt in der Maske definiert:

Feldvorlage für ein Feld mit dynamischer Stichwortliste

  1. Erstellen Sie eine Feldvorlage.

  2. Vergeben Sie einen Wert im Feld Feldgruppe.

    Diesen Wert benötigen Sie im späteren verlauf im Formulardesigner.

    In diesem Beispiel wird in der Feldvorlage im Feld Feldgruppe der Wert "DYN_LIST" verwendet.

  3. Tragen Sie im Bereich Stichwortliste im Feld Dynamische Stichwortliste den Namen einer Script-Datei ein.

    Das entsprechende Script muss vorhanden sein und in folgendem Ordner liegen:

    Administration // IndexServer Scripting Base.

    Dokumentenpfad für das Script 'CountryCodes'

    In diesem Beispiel wird das Script CountryCodes eingetragen. Eine kurze Fassung des Scripts finden Sie im nachfolgenden Abschnitt Beispiel-Script.

  4. Um die Liste in einem Formular zu verwenden, müssen Sie den in der Feldvorlage verwendeten Wert aus Feldgruppe im Formulardesigner in Gruppenname eintragen.

    In diesem Beispiel ist das der Wert "DYN_LIST".

    Gruppenname 'DYN_LIST' im Formulardesigner

# Beispiel-Script

Das im Beispiel verwendete Script CountryCodes ist ein Script, das eine statische Liste von Länderkürzeln und -namen bereitstellt:

importPackage(Packages.de.elo.ix.jscript);
importPackage(Packages.de.elo.ix.scripting);
function getDataIterator() {
    try {
        log.info("getDataIterator(SimpleDatabaseQuery");
        return new DynamicKeywordDataProvider(new CountryCodes());
    } finally {
        log.info(")getDataIterator");
    }
}
function CountryCodes() {
    var index = 0;
    var results = [];
    /* Hilfefunktion, die eine Länderliste filtert */
    this.filterCountries = function(filter) {
        log.info("filter: " + filter)
        filter = filter.toLowerCase()
        results = [];
        for (var i=0; i<isoCountries.length; i++){
            if (isoCountries[i].cname.toLowerCase().indexOf(filter) >= 0) {
            results.push([isoCountries[i].ccode, isoCountries[i].cname]);
            }
        }
        log.info("Nach Filter: " + results.length);
    }
/* Wird bei der Initialisierung einer dynamischen Liste aufgerufen
 (durch Deklarierung in der Maske) */
    this.open = function(ec, sord, focus) {
        log.info("öffnen");
    this.target = focus;
/*In diesem Fall wird das erste Feld der Maske ausgewählt,
 idealerweise sollte aber ein anderes ausgewählt werden */
    var filter = sord.objKeys[0].data[0] || "";
    this.filterCountries(filter);
}
/* Wird aufgerufen, wenn eine dynamische Liste durch das ELOwf-Feld
 "Dyn. keywording map"; initialisiert wird */
    this.openMap = function(ec, map, focus) {
        log.info("openMap");
        log.info(JSON.stringify(map));
        this.target = focus;
        var filter = map[focus] || "";
        this.filterCountries(filter);
    }
    this.close = function() {
        log.info("schließen()");
    }
    this.getNextRow = function() {
        var row = results[index];
        index++;
        log.info("getNextRow(" + row + ")");
        return row;
    }
/* Die Benennung der Spalten */
    this.getHeader = function() {
        log.info("getHeader()");
        return ["Code","Name"];
}
/* Das Ziel des ausgewählten Eintrags */
    this.getKeyNames = function() {
        log.info("getKeyNames()");
        return [this.focus, "EIN_ANDERES_FELD"];
    }
    this.hasMoreRows = function() {
        log.info("hasMoreRows()");
        return (index < results.length - 1);
    }
/* Entweder wird eine Fehlermeldung zurückgegeben,
 oder bei Erfolg leer gelassen */
    this.getMessage = function() {
        log.info("getMessage()");
        return "";
    }
    this.getTitle = function() {
        log.info("getTitle()");
        return "Country Codes";
    }
}
var isoCountries = [
    {'ccode' : 'AF', 'cname' : 'Afghanistan'},
    {'ccode' : 'AX', 'cname' : 'Aland Islands'},
    {'ccode' : 'AL', 'cname' : 'Albania'},
    /* ... */
    {'ccode' : 'ZW', 'cname' : 'Zimbabwe'}
];

Weitere Informationen finden Sie in den folgenden Dokumentationen:

Zuletzt aktualisiert: 22. April 2026 um 09:04