Tout développeur K2 a déjà, au moins une fois dans sa vie, eu besoin d’enlever la sélection sur les éléments d’une vue list. Cependant une seule solution s’offre souvent nous : rafraîchir la vue. Dans cet article, nous allons voir comment enlever cette sélection sans avoir à rafraîchir la vue entière.

« Mais rafraîchir la vue entière, ça marche bien, non ? » Me direz-vous 😊. Je vous répondrais oui. Seulement, pour une vue mappée sur une source de données (très) volumineuse, le « Refresh » peut causer des problèmes de performances sur l’application. C’est pour quoi je vais vous présenter un moyen simple et efficace d’enlever la sélection.

Le cas d’utilisation est simple, on a une vue List (1), on sélectionne un élément (2), et on clique sur un bouton (3) pour enlever la sélection sans rafraîchir la vue.

Enlever la sélection sur les éléments d’une vue liste sans rafraîchir la vue

Etapes

Créer un Label caché dans l’entête de la vue

La première étape consiste à ajouter un Label caché à l’en-tête de la vue (le nom du label doit être assez explicite parce que c’est lui qui sera utilisé dans le script)

Enlever la sélection sur les éléments d’une vue liste sans rafraîchir la vue

Créer un Data Label caché

Créer un Data Label caché dans le Formulaire à partir duquel on veut enlever la sélection. Nous l’appellerons dl_MoveSelection.
NB : Quelque chose de très important à noter, le Data Label caché doit être en mode Literal (comme dans la capture). Sans quoi, ça ne fonctionnera pas.

Enlever la sélection sur les éléments d’une vue liste sans rafraîchir la vue

Configurer le bouton

La configuration du bouton est la partie principale de toute la tâche. Ici, il faut faire deux (02) Transfer Data.

  1. Le premier contiendra le script Javascript qui enlèvera toutes les sélections de la vue (tout en vidant le SmartObject)
  2. Le deuxième pour vider le Data Label afin qu’il soit réutilisable.

Dans notre cas on a utilisé un ToolBar Button nommé Move Selection
Enlever la sélection sur les éléments d’une vue liste sans rafraîchir la vue
Le script à transférer au Data Label caché est le suivant :

<script>$('span[name="LabelName"]').closest('.grid-toolbars').siblings('.grid-body').find('tr.selected').removeClass('selected');</script>

L’attribut name du script prend la valeur du label caché créé précédemment “LabelName” dans notre cas

Vous savez tout !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.