Se prémunir de la perte de données non sauvegardées par l’utilisateur

Lors de la saisie d’informations dans des listview editables, il peut arriver de perdre du temps à re-saisir des données que nous avons simplement oubliées d’enregistrer par flemme d’appuyer à chaque fois sur le bouton save avant la fin de la saisie complète…. ou en cliquant malencontreusement sur le bouton Refresh.

Nous allons donc voir aujourd’hui les règles à mettre en place afin de se prémunir de ce comportement et demander une validation à l’utilisateur avant d’exécuter les actions demandées.

La procédure suivante doit donc nous simplifier la vie. L’objectif est de détecter la présence de modifications non enregistrées avant de faire une action (refresh et autres).

Règle à mettre en place
Règle à mettre en place

L’idée de cette règle est d’ajouter deux contrôles de type datalabel pour enregistrer les actions : modifier (FieldModification) ou continuer notre action (OutputCheckIfModified).

Puis nous allons détecter sur toutes les lignes de la vue d’éventuels ajouts, des modifications ou des suppressions. Ainsi le champ FieldModification, initialisé à FieldNotModified, est mis à jour à chaque modification de la vue à FieldModified.

Ensuite, lorsque nous voulons faire une action au niveau du formulaire, la procédure vérifie le contenu de ce champ, et s’il contient FieldModified, un message s’affiche à l’écran. Il nous informe qu’il y’a eu des changements non sauvegardés et si nous souhaitons continuer et perdre la saisie. Nous aurons alors le choix entre continuer l’action ou l’annuler. En même temps, le second champ OutputCheckIfModified initialisé à ContinueAfterConfirmation va contrôler le choix fait à l’affichage de ce message. Lorsqu’une modification est détectée, ce champ passe à NotContinueAfterConfirmation.

Enfin, si on appuie sur OK, le champ passe à ContinueAfterConfirmation.

Appel de la règle depuis chacune des actions
Appel de la règle depuis chacune des actions

Ainsi dans la procédure ci-dessus, lorsque nous essayons de rafraîchir le formulaire, on appelle d’abord la règle CheckIfModified. Si la valeur du champ est ContinueAfterConfirmation (réponse au message = OK), alors on exécute l’action.

Ce message s’affiche à l’écran : Vue en modification et action “Refresh”

Si on appuie sur Cancel, l’action n’est pas exécutée.

Vue lorsqu’on appuie sur Cancel

C’était tout pour cette astuce. A bientôt !!!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.