Initialiser un champ en création à partir d'un preset search

Bonjour,
Sur mon application j’utilise des preset search pour afficher des vues. Je voudrais que quand je clique sur Create à partir d’une de ces vues, le filtre appliqué dans ma preset search soit utilisé pour initialiser le champ correspondant du formulaire de création.
J’ai essayé de le faire dans le InitCreate mais le nom de l’instance est le même quel que soit l’endroit d’où je viens.
Comment savoir que je viens d’une vue ? Est-ce que je dois utiliser des paramètres de session ?

Merci !
Emmanuelle

Version=4.0.P25
BuiltOn=2021-01-25 18:55 (revision 8e9b757c68b3391e16a0570ac07b374ccc25a0e6)

Sur une vue l’instance peut être un panel_ajax_xxx ou home_ajax_xxx avec un index en suffixe s’il y en a plusieurs. Si le nom de l’instance ne permet pas d’identifier l’objet, plusieurs idées pour mémoriser le contexte d’usage :

  • Ajouter un champ caché non persistant dans l’objet et le forcer à une certaine valeur dans chaque preset search. Et regarder la présence d’un filtre sur ce champ à l’initCreate

  • Ajouter une action “Créer” spécifique (et masquer l’action Créer de base) qui positionne les champs ou un flag sur l’objet (setParameter) et redirige vers la création où le initCreate fera des choses particulières en plus si le flag est présent + retire le flag.

1 Like

En fait mon problème c’est que dans le initCreate je perds toutes ces informations. Je n’ai plus le nom d’instance de ma vue mais celui du formulaire de création j’ai l’impression. Et tous mes filtres sont vides, celui du champ non persistant aussi.

com.simplicite.objects.RCIB.RciDomain|Filter param : ||Event: %
com.simplicite.objects.RCIB.RciDomain|Filter : ||Event: %
com.simplicite.objects.RCIB.RciDomain|Instance : ||Event: the_ajax_RciDomain

Oui, il faut bien mettre en mémoire le contexte d’usage ou de navigation depuis l’appelant car une création se fait toujours sur l’instance Main de l’objet (the_ajax_xxx), par contre une bannette de recherche peut être sur une instance dédiée (panel, home, workflow…).

  • Dans l’instance qui a les informations (ex: dans le preSearch du isHomeInstance), il faut les positionner en variable de session getGrant().setParameter("MYCONTEXT", "blahblah")
  • C’est aussi le front qui peut faire un appel ajax pour positionner un context app.setSysParam... sur chaque list.onload si en back ce n’est pas possible
  • Et dans le initCreate du isMainInstance, il faut tester la présence du paramètre de session et forcer des valeurs puis retirer le contexte pour qu’il ne serve qu’une fois par exemple.
1 Like