PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • 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/iPadApple WatchUniversal Windows 10 AppWindows Mobile
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 "Désactiver le mécanisme de synchronisation des pages pour ce champ" dans l'onglet avancé du champ n'a pas été désactivée.
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 "Utiliser le mécanisme de synchronisation" de l'onglet "Détail" 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 "Désactiver le mécanisme de synchronisation des pages pour ce champ" 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 "Envoi au serveur (Submit)" est bien cochée. 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