# Listes de mots-clés dynamiques

Un champ de mot-clé dynamique est un champ qui peut représenter un contenu sur plusieurs colonnes. En règle générale, le champ est soumis à un filtrage dynamique d'une ou de plusieurs valeurs de champ. Le formulaire ressemble à ceci :

Exemple pour un champ de mot-clé dynamique; tableau avec pays et raccourcis pays

Les listes de mots-clés dynamiques sont un sujet relativement complexe dans ELO, demandant des connaissances de scripting. Elles sont disponibles dans le client Java ELO et dans le client Web ELO.

Les avantages de ces listes de mots-clés dynamiques sont :

  • Faire afficher plusieurs colonnes de données
  • Récupérer les contenus de façon dynamique (par exemple : base de données externes, données calculées de façon dynamique, scripts ELO...)
  • Les données peuvent être filtrées, non seulement dans un champ, mais aussi en dépendance de nombreux autres champs (par exemple : ce que l'utilisateur a entré et une catégorie ayant été sélectionnée auparavant par l'utilisateur).
  • Remplir d'autres champs avec sélection d'entrée (champs en lecture seule inclus)

L'utilisation d'une liste de mots-clés dynamique est définie directement dans le masque :

Modèle de champ pour un champ avec liste de mots-clés

  1. Créez un modèle de champ.

  2. Saisissez une valeur dans le champ Groupe de champs.

    Cette valeur sera requise par la suite dans le créateur de formulaires.

    Dans cet exemple, la valeur "DYN_LIST" est utilisée dans le champ Groupe de champs.

  3. Dans la section Liste de mots-clés, dans le champ Liste de mot-clé dynamique, vous pouvez entrer le nom d'un fichier de script.

    Le script correspondant doit être disponible et se trouver dans le classeur suivant :

    Administration // IndexServer Scripting Base.

    Chemin de document pour le script 'CountryCodes'

    Dans cet exemple est entré le script CountryCodes. Un extrait du script se trouve sous Exemple de script.

  4. Pour utiliser la liste dans un formulaire, vous devez entrer la valeur utilisée dans Groupe de champs dans le créateur de formulaires dans Nom de groupe.

    Dans cet exemple, il s'agit de la valeur "DYN_LIST".

    Nom de groupe 'DYN_LIST' dans le créateur de formulaire

# Exemple de script

Le script utilisé dans notre exemple, CountryCodes, est un script qui met à disposition une liste statique de raccourcis et de noms de pays :

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 = [];
    /* Fonction d'aide qui filtre une liste de pays */
    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("Selon le filtre : " + results.length);
    }
/* est lancé lors de l'initialisation d'une liste dynamique
 (déclaration dans le masque) */
    this.open = function(ec, sord, focus) {
        log.info("ouvrir");
    this.target = focus;
/*Dans ce cas, le premier champ du masque est sélectionné,
 mais dans l'idéal, un autre champ devrait être sélectionné */
    var filter = sord.objKeys[0].data[0] || "";
    this.filterCountries(filter);
}
/* Est lancé lorsqu'une liste dynamique est initialisée par le
 "Dyn. keywording map"; champ ELOwf */
    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;
    }
/* Renommer les colonnes */
    this.getHeader = function() {
        log.info("getHeader()");
        return ["Code","Name"];
}
/* La cible de l'entrée sélectionnée */
    this.getKeyNames = function () {
        log.info("getKeyNames()");
        return [this.focus, "UN_AUTRE_CHAMP"];
    }
    this.hasMoreRows = function() {
        log.info("hasMoreRows()");
        return (index < results.length - 1);
    }
/* Soit un message d'erreur est rendu,
 soit il est laissé vide en cas de réussite */
    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'}
];

Vous trouverez d'autres informations dans les documentations suivantes :

Dernière mise à jour: 12 juin 2026 à 07:41