|
|
|
|
- Présentation
- Principe
- Rappel : le code de synchronisation est déclenché lorsque les trois conditions suivantes sont réunies
- Mise en oeuvre
Synchronisation personnalisée pour les champs Table fichier
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. 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.
Pour personnaliser la gestion de synchronisation pour les champs Table fichier : - 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).
- 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.
- 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
- 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.
- 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|