Limiter le nombre de lignes d'un many2one field

Bonjour,
Comment limiter le nombre d’enregistrements (de lignes) apparents lors de la sélection d’un champ many2one selon une condition?
Merci d’avance.

Il est possible d’utiliser l’attribut x-limit sur le champ M2O dans la vue en spécifiant le nombre d’enregistrement visible dans la sélection déroulante.

<field name="myField" x-limit="4"/>

Par défaut, le nombre d’enregistrements affichés est 10.

1 « J'aime »

Merci pour votre réponse. En fait, ce dont j’i besoin est la limitation des enregistrements selon une condition et non seulement le nombre d’enregistrement apparents.

Ce n’est pas supporté pour le moment de faire cette limitation d’enregistrements sous conditions.

Je l’ai fait a l’aide d’un controlleur avec response.setAttr(nom du field ,“domain”,condition du domain);

Bonjour,

Un exemple serait le bienvenu :slight_smile:
Merci d’avance

J’ai eu une liste d’ ids des produits que je veux visualiser avec un champ many-to-one, qui varie selon une condition (cette liste est retournée par une fonction java “myFunc”).
Dans le contrôleur, j’ai appelé ma liste comme suit: List<Long> ids = service.myFunct(partner);
Afin de limiter la liste des produits, j’ai utilisé le response.setAttr comme suit:
response.setAttr(“produit”, “domain”, “self.id in (” + Joiner.on(",").join(ids) + “)”);
avec “produit” est le champ many-to-one.

Bonjour,

J’aimerais savoir si c’est supporté aujourd’hui ?
Car j’en ai besoin, et ça m’embêterai de pas pouvoir le faire.
Je précise qu’actuellement j’arrive a bien récupérer les valeurs possibles dans l’évènements Java, mais impossible d’obtenir le contexte qui contient l’objet dans lequel on veut “mettre” le M2O.

Bonjour,

Dans une grande majorité de cas il est possible d’utiliser simplement l’attribut “domain” sur le champ concerné. Il est également possible de passer des paramètres (contexte de la vue) à l’attribut domain en utilisant le caractère “:”.

Cet attribut peut également être modifié dynamiquement lors d’un événement en utilisant une action-attrs ou via un controller java. L’appel à une action-attrs ou un controller java ne devrait se faire que lorsqu’il n’est pas possible de définir la clause WHERE de la requete jpql sur l’attribut domain sans utiliser d’algorithme. En effet, l’attribut “domain” est moins coûteux.

Une action-attrs ou action-method devrait toujours être appelée sur l’événement onSelect du champ concerné. Dans le cas contraire, il est nécessaire de déclencher l’appel sur onNew, onLoad et sur onChange de l’ensemble des champs servant de paramètre ce qui peut être plus coûteux.

Ce fonctionnement est mis en place depuis les premières versions du framework. Le commentaire
Limiter le nombre de lignes d'un many2one field fait référence à une autre fonctionnalité qui est de pouvoir choisir le nombre d’enregistrement affichés en dropdown lorsque l’on commence à taper une valeur dans la cellule. C’est à dire qu’on peut avoir un M2O vers un objet contenant 50 enregistrements, filtrer sous condition (via l’attribut “domain”) pour permettre à l’utilisateur de choisir une valeur parmi 25 enregistrements, mais décider d’afficher uniquement les 4 premiers lorsque l’on commence à saisir une valeur (via l’attribut x-limit). Il est toujours possible dans ce cas de cliquer sur la loupe pour retrouver les 25 enregistrements. Par défaut, on visualise les 10 premiers enregistrements. Il n’est pas possible de conditionner l’attribut x-limit mais sincèrement je ne vois pas les cas d’usages concernés.

Cordialement

1 « J'aime »

Bonjour,

Effectivement, ça fonctionne ^^
Est-ce possible de faire comme dans une vue hiérarchique, sur sorte de “self.anObject.valueOnAnObject” ?