Appliquer un filtre dans champ type Enuméré d'une vue liste

Bonjour,

J’ai un objet métier comportant 2 champs de type Enuméré : Délégation et Filière. Dans la vue liste de l’objet métier, j’applique un filtre sur la Délégation qui affiche les données associées en résultat.

J’aimerais pouvoir appliquer un 2e filtre, cette fois sur le champ Filière. Ce dernier dépend du choix saisi dans Délégation. Or, dans la recherche par liste, j’ai toutes les valeurs de Filière qui me sont proposées. Alors que je ne souhaite afficher que les valeurs possibles de Filière associées à la valeur de Délégation. cf Capture d’écran.

J’ai essayé avec initRefSelect, setSearchSpec mais aussi en jouant sur l’alimentation des items de la liste dans le postLoad ou preSearch (cf code ci-dessous). Comme Gérard…en vain.

list.getAllItems().clear();
		
			for (String row[] : g.query("select distinct lad_ref_filiere_code, lad_ref_filiere_libelle from lad_ref_filiere order by lad_ref_filiere_libelle asc")) {
    			list.putItem(row[0], row[1], true);
			}

Pouvez-vous m’aider svp ?

En vous remerciant.

Bruno

Bonjour Bruno,

Est-ce que tu as paramétré une liste liée ?

Bonjour Alistair,

Non. Je ne connais pas ce type de liste. Cela pourrait répondre à mon besoin ?

Je ne sais pas encore. Je pose la question vu que c’est un mécanisme standard qui permet de filtrer un énum selon la valeur d’un autre.

Pourquoi est-ce qu’il y a plusieurs fois les valeurs “Actions Partenaires”, “Contrats Alternance”, etc. dans l’énum Filière ?

D’accord, je vais regarder ça.

Le libellé apparaît plusieurs fois car j’ai l’impression qu’il charge tous les items du champ Filière. Les 2 listes Délégation et Filière de l’objet métier ConfFinanceurs (visible dans la capture d’écran) sont alimentées de manière dynamique.

A côté de cela, on a 2 objets métiers de configuration associées : RefDelegation et RefFiliere. Ils regroupent tous les champs possibles pour les délégations et filières. Les données dans ces 2 objets métiers sont chargées initialement à partir d’un import CSV. Ensuite, un utilisateur admin peut aller ajouter/supprimer/modifier des données sur ces 2 objets.

Dans l’objet métier ConfFinanceurs, lui aussi alimenté initialement avec un import CSV, on alimente les champs Delegation et Filiaire (tous les 2 de type Enuméré) en récupérant via une requête SQL SELECT les valeurs de champs des objets métiers RefDelegation et RefFiliere.

ObjectFieldList list = object.getField("ladConfFinanceursDelegation").getList();
list.getAllItems().clear();
		
			for (String row[] : g.query("select distinct lad_ref_filiere_code, lad_ref_filiere_libelle from lad_ref_filiere order by lad_ref_filiere_libelle asc")) {
    			list.putItem(row[0], row[1], true);
			}

Je ne sais pas si j’ai réussi à être clair. Peut-être que notre conception n’est pas optimale aussi.

Donc si j’ai bien compris, ces énumérés sont saisis par un admin métier.
S’il y a des duplications il faut peut être revoir comment vous créez ces énumérés. Attention également à la suppression d’un élément de la liste de référence et la gestion des records qui utilisent une valeur supprimée.

Comment gères-tu le filtre sur la liste des Filières selon ce qui est saisi dans Délégation au niveau de tes listes de références ? Est-ce que tu as modélisé un lien 1-N entre les deux listes ?

D’un point de vue conception, pourquoi ne pas avoir utilisé un lien vers un objet métier plutôt que 2 énumérés ?

Bonjour Alistair,

J’ai fini par revoir le fichier de paramétrage pour éviter les doublons de libellés. Cela marche beaucoup mieux désormais.

Merci pour ton aide.

Bruno

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.