Objet métier pour alimenter une liste déroulante

Objet métier pour alimenter une liste déroulante
0
Tags: #<Tag:0x00007fec5ca60400>

Bonjour,

Exemple : j’ai un objet métier A et un objet métier B avec chacun un attribut “ville”. J’aimerai que l’attribut “ville” de l’objet B affiche toutes les valeurs “ville” de l’objet A sous forme de liste déroulante.

C’est possible?

Fabrice

Présenter une référence à un objet en liste avec complétion est une feature standard, exemple:

Ca se configure au niveau du rendering de la foreign key, dans l’exemple:

Bonjour,

Je ne comprends pas si A est une liste de référence de villes, ou contient des doublons de villes (comme des adresses postales).

S’il n’y a pas de référence (foreign-key) entre vos objets (solution de @david), il faudra soit :

  • Créer un Datamap entre vos 2 villes, ça permet de faire une recherche et une alimentation de champ par valeur (via une loupe) mais ça ne fera pas de “distinct” de ville unique si A a des doublons

  • Si vous voulez une liste type “select box” ou faire un distinct, il faudra créer une liste de valeurs CHAMP_VILLES vide associée à votre champ typé ENUM, et l’alimenter dynamiquement par code à chaque initUpdate, exemple :

ObjectFieldList list = getField("champVille").getList();
// Annule et remplace
list.getAllItems().clear();
// list.putItem("Code", "Ville de Lausanne", true);
for (String row[] : getGrant().query("select distinct ville from table_a order by ville asc"))
    list.putItem(row[0], row[0], true);

A faire dans le postLoad une seule fois, si A ne change qu’à chaque mise en production.

De plus, il faut savoir ce que vous voulez stocker dans la table B, un code postal ou son libellé, auquel cas il faut que le premier argument soit un CP par exemple.