Trier les enregistrements sélectionnés

Bonjour,

Les ordres de tri servent aux recherches en base via la méthode search.
Le getSelectedIds retourne les enregistrements sélectionnés par l’utilisateur dans l’ordre de sa sélection, ce qui est bien le résultat attendu (typiquement pour une action de “merge” où le premier sera l’objet principal).

Vous devez donc :

  • soit re-trier vos ids par code java
  • ou refaire un search limité aux ids sélectionnés via filtre ou search-spec

Attention

  • si ids est nul ce la signifie que “tout” est sélectionné pour éviter d’encombrer la mémoire avec toute la base. Si ce comportement est attendu et que la table est énorme, il faudra paginer la lecture pour ne pas saturer le mémoire.
  • si ids est vide : rien n’a été sélectionné, à vous de dire si c’est normal ou pas à l’utilisateur
ObjectDB entite = this.getGrant().getTmpObject("ParticipationEntite");
entite.resetFilters();
entite.resetOrders();
entite.getField("ParticipationEntiteTypePers").setOrder(1);
entite.getField("participationDirectionLibelle").setOrder(2);

List<String> ids = getSelectedIds();
if (!Tool.isEmpty(ids)) {
   String[] list = Arrays.asList(ids);
   entite.getRowIdField().setFilter("in (" + String.join(",", list) + ")");
}

// attention si ids est nul = ceci ramènera TOUTE la table
// Si tel est le cas, il faudra prévoir une lecture paginée en boucle
List<String[]> rows = entite.search();

...

entite.resetFilters();
entite.resetOrders();