Filtrer les données dans une preSearch(), PostLoad() ou InitList()

Bonjour,

Nous utilisons la version 5.1.34.
Nous filtrions les données grâce à une preSearch() ou postLoad() en appliquant une “setSearchSpec” sauf qu’un moment donné, à la création, nous avions une erreur " unable to get Row ID " .

Du coup comme solution de contournement, nous avons mis les setSearchSpec dans une initList() pour ne filtrer les données que lorsqu’on affiche la liste ce qui empêche d’avoir l’erreur cité au dessus. Sauf que mettre les setSearchSpec dans une initList() déclenche 2 dysfonctionnement :

1. ça ne fonctionne pas tout le temps.
2. Quand il y'a un diagramme d'état, le nombre le ligne de données dans chaque état est différent de celui affiché.

Pouvez-vous me proposer une solution fonctionnelle s’il vous plait ?

Bonne journée.

Bonjour Mehdi,

Dans quel cas est-ce que ça ne fonctionne pas ?

Peux-tu m’en dire un peu plus sur le besoin afin que je puisse t’orienter dans la bonne direction ?

Hello Alistair,

Par exemple, Un réferentUfa ne doit voir que les organisme de formations (UFA) aux quels il est liés ( ça fonctionne directement sur l’objet Organisme de formation au moment de l’affichage à travers le menu) :

  1. ça ne fonctionne pas tout le temps :
    exemple: Le référent Ufa doit créer un formateur (profil) et dans le formulaire de création il doit choisir un organisme de formation et bien à ce moment là, le filtre la setSearchSpec que nous avons appliqué en initList() ne fonctionne plus ( je suppose qu’au moment où on clique sur la loupe pour choisir un organisme de formation on est plus dans l’affichage de liste d’où l’affichage de la totalité des organismes de formations ) :


    Avec la preSeach() nosu avions pas ce souci car ça filtrait quelque soit le cas sauf qu’à la création d’un formateur ça lançait l’erreur unable to get row id et c’est normal car un filtre est mis en place.

  2. Quand il y’a un diagramme d’état, le nombre le lignes de données dans chaque état est différent de celui affiché :
    exemple : le référentUfa ne doit voir que les alternants qui sont lié au même Ufa que lui ( ça fonctionne mais vu que l’alternant a un diagramme d’état, la initList() ne permet pas de faire la bonne somme des lignes de chaque état par rapport à ceux affichés )

Merci Alistair.

Pour filtrer une pop-up de sélection de référence, il faut implémenter le hook initRefSelect. Mais implémenter ça dans le postLoad de ton objet Organisme devrait fonctionner également.

Si c’est implémenté dans le postLoad de l’objet Alternant, le count devrait retourner le bon nombre. Pourquoi ne pas avoir utilisé ce hook ?

Le postLoad() fonctionne au lancement mais fonctionne différemment après la création d’un nouveau formateur :

durant la création il ne filtre pas les organismes de formations durant le choix d’organisme de formation :

après création le filtre ne fonctionne plus mais en plus de ça il casse le filtre d’objet qui n’affiche que les formateurs :

Avantage :

  • le compte des lignes est bon pour le diagramme d’état.
  • à la création il n y’a pas le problème de l’erreur lors de la création même si il ne fait pas partie de la liste qu’il doit afficher.

Inconvénients :

  • filtre non fonctionnel et Filtre d’objet cassé après création
  • filtre de recherche non appliqué.
    PreSearch() :

Avantage :

  • Le compte des états est bon.
  • Filtre fonctionnel avant et après création et modification.
    Inconvénients :
  • " Unable to get row id" si celui là n’est pas liè à lui dès la création enfin si la règle du filtre n’est respécté.
  • filtre de recherche non appliqué au moment du choix de l’organisme de formation.

Est-ce que tu as une autre searchSpec qui vient écraser celle positionnée au postLoad ?

Sur l’objet Organisme tu as implémenté une searcSpec dans le postLoad ou dans le initRefSelect ?

Les searchSpec ont donc été implémentées dans le postLoad et un getDefaultSearchSpec() a été utilisé pour récupérer le filtre positionné au niveau de la configuration de l’objet métier.

On a donc :

setSearchSpec(getDeafultSearchSpec() + " and my_sql_condition");

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