DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / Développer une application ou un site / Champs, fenêtres et pages / Page / Gestion du Back
  • Présentation
  • Principe
  • Rappel : le code de synchronisation est déclenché lorsque les trois conditions suivantes sont réunies
  • Mise en oeuvre
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Synchronisation personnalisée pour les champs Table fichier
Présentation
Dans certains cas, il est nécessaire d'utiliser une synchronisation personnalisée pour les champs "Table fichier". Par exemple, il faut gérer la synchronisation entre :
  • la page affichée dans le navigateur. Cette page contient un champ "Table fichier".
  • le contexte de page correspondant existant sur le serveur.
Cette gestion personnalisée de la synchronisation permet de mettre à jour le contexte de la page sur le serveur en fonction de la page affichée sur le navigateur. Aucun message de désynchronisation n'est affiché sur le navigateur.
Principe
La méthode de synchronisation personnalisée pour les champs "Table fichier" s'appuie sur une information cachée dans la page : l'identifiant de l'enregistrement sélectionné dans le champ Table fichier.
La synchronisation va consister à relire sur le serveur l'enregistrement en cours dans le champ Table fichier et à rafraîchir ce champ. Ces opérations sont effectuées dans le code de synchronisation.

Rappel : le code de synchronisation est déclenché lorsque les trois conditions suivantes sont réunies

  • la page affichée sur le navigateur ne correspond plus au contexte de page du serveur.
  • l'utilisateur exécute un code serveur en cliquant sur un lien ou un bouton.
  • l'option "Appeler le traitement de synchronisation de la page si l'internaute a utilisé le bouton précédent du navigateur" n'a pas été décochée dans l'onglet "Avancé" de la description du champ.
Mise en oeuvre
Pour personnaliser la gestion de synchronisation pour les champs Table fichier :
  1. Vérifiez que le mécanisme de gestion de synchronisation est activé.
    • au niveau de la page (option "Utilisation du bouton "Précédent" du navigateur" correspondant à "Autorisé (exécute le code de synchronisation)" de l'onglet "UI" de la description de la page).
    • au niveau de chaque bouton permettant de gérer le champ Table ou d'effectuer une action sur l'enregistrement sélectionné dans le champ (option "Appeler le traitement de synchronisation de la page si l'internaute a utilisé le bouton précédent du navigateur" non décochée dans l'onglet "Avancé" de la description du champ).
  2. Vérifiez que pour les colonnes de type "Lien" de votre champ Table, l'option "Envoyer la valeur des champs au serveur (HTML submit)" est bien cochée (onglet "Détail" de la colonne). Ces colonnes permettent d'effectuer le code de clic sur une ligne du champ Table.
  3. Créez un champ invisible (nommé "IDUNIK" par exemple). Ce champ doit contenir l'identifiant de la ligne sélectionnée dans le champ Table par l'utilisateur. L'initialisation de ce champ doit être réalisée :
    • dans le code d'initialisation du champ Table.
    • dans le code de clic sur une ligne du champ Table.
      Un exemple de code permettant d'initialiser le champ par l'identifiant du Client est : IDUNIK = CLIENT.IDCLIENT
  4. Créez si nécessaire les boutons (ou liens) permettant d'afficher la page suivante ou la page précédente du champ Table. Le code de ces boutons doit initialiser le champ invisible créé au point 3.
  5. Personnalisez le code de synchronisation de la page en cours. Ce code de synchronisation doit :
    • relire l'enregistrement correspondant à l'identifiant stocké dans le champ caché.
    • ré-afficher le champ Table à partir de cet enregistrement
Un exemple de code de synchronisation peut être :
// Récupération de la valeur du champ caché
EnregistrementEncours = PageParamètre(IDUNIK)

// Recherche de l'enregistrement
HLitRecherche(CLIENT, IDCLIENT, EnregistrementEncours)
SI HTrouve() = Vrai ALORS
// Modification de la clé de parcours dans le cas 
// où la clé de parcours du champ Table est 
// différente de la valeur de la clé stockée dans le champ invisible
HChangeClé(CLIENT, Nom) 
// Actualisation du champ Table
TableAffiche(TABLE_MaTable, taActualise)
// Récupère le numéro de la ligne en cours
LigneEnCours = PageParamètre(TABLE_MaTable)
// Positionne le bandeau dans le champ Table
TableSelectPlus(TABLE_MaTable, LigneEnCours)
// Continue l'application sans afficher de message
ChangeAction(caContinuer)
SINON
ChangeAction(caErreur)
FIN
Version minimum requise
  • Version 9
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale