Power Apps – Soumission de formulaire et notification d'erreur ou de succès
-
Power Apps – Soumission de formulaire et notification d'erreur ou de succès
Capture…
Il n’est pas toujours facile de savoir comment gérer proprement les messages d’erreurs suite à la soumission d’un formulaire dans une application Power Apps.
Après de nombreux essais, il me semble qu’une bonne approche pourrait être celle-ci…
-
Button1.OnSelect =
SubmitForm(Form1)
// Lorsque je clique sur un bouton je soumets le formulaire (cela garantit que les messages d’erreur de saisies au niveau des champs s’afficheront bien dans les datacards, nativement) -
Form1.OnSuccess =
Notify("Sauvegarde résussie !"; NotificationType.Success)
// Tout s’est bien passé -
Form1.OnFailure = // Déclenché que l’erreur provienne des saisies (
Form1.Valid = true
) ou de l’enregistrement des données dans la source de données
If(n Not(Form1.Valid); // Si le formulaire n'est pas valide au niveau des saisies on complète les messages d'erreurs dans les datacards avec une petite notificationn Notify(n "Vous avez des erreurs dans votre formulaire. Vérifiez vos saisies."; n NotificationType.Errorn ); n Notify( // Le formulaire est valide mais on est quand même dans le OnFailure, c'est qu'il y a eu un problème -> on affiche le premier message d'erreur trouvé sur la source de donnéesn $"Erreur à l'enregistrement ({First(n Errors(MaSourceDeDonnées)n ).Message})."; n NotificationType.Errorn )n)
Gestion d’un spinner d’attente pendant l’enregistrement
Il est de bon ton d’indiquer à l’utilisateur que l’enregistrement de ses données est en cours en affichant à l’écran un petit spinner (composant PowerSpinner dispo ici). Pour garantir qu’il ne s’affiche que pendant la phase de sauvegarde et qu’il se masque à nouveau si une erreur est survenue à la soumission du formulaire, voici comment procéder :
-
Button1.OnSelect devient
UpdateContext({locSaving: true});; SubmitForm(Form1)
-
A la fin du Form1.OnSuccess ajoutez :
UpdateContext({locSaving: false})
-
A la fin du Form1.OnFailure ajoutez :
UpdateContext({locSaving: false})
-
Placez votre Spinner1 à l’écran
-
Spinner1.Visible =
locSaving
N’hésitez pas à réagir ou à proposer une autre approche… 😉
PostID=7HE1YBPjiBVCLdV
-
Connectez-vous pour répondre.