PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 27 → Positionnement page
Positionnement page
Débuté par Cedric D., 23 aoû. 2022 12:59 - 10 réponses
Posté le 23 août 2022 - 12:59
Bonjour,

J'ai une page avec un bouton "Fiche" qui déclenche dans un code serveur un pageaffichedialogue.
Au retour de cette page, j'aimerais que la page revienne à la position de ce bouton "Fiche" au lieu de revenir en haut de page.
Il y a des histoires d'ancre, de pageposition mais c'est du code navigateur
Une idée ?
Posté le 23 août 2022 - 16:59
Bonjour,

perso je gère ça comme ceci :

1. Si le bouton qui fait l'appel à pageAfficheDialogue est ajax activé :
dans l'event "Retour de traitement ajax" : un petitit pagePosition

2. Si le bouton ne peut pas être en ajax :
Dans le code de déclaration de la page déclarer une variable sNomChampAselectionner
Dans le code serveur de votre bouton sNomChampAselectionner = nomChamp..alias
Dans l'event chargement navigateur (onload navigateur) de la page :
SI sNomChampAselectionner >"" ALORS
PagePosition("",sNomChampAselectionner)
FIN
Posté le 24 août 2022 - 09:45
Merci Ariety.
Mon bouton n'est pas en ajax.
J'ai testé le pageposition en onload mais pas d'effet.
Pourtant il passe bien dans "SI sNomChampAselectionner ..." avec l'alias

Je vais continuer à cherche et tiens au courant
Posté le 24 août 2022 - 10:14
Dsl Arriety et pas Ariety
Un détail, j'ai une celule "Annuler" "Valider" en haut de la page.
Peut-être ça qui coince
Posté le 24 août 2022 - 10:22
L'épinglé n'a apparamment pas d'effet relatif à mon pb.
Posté le 24 août 2022 - 12:25
Curieux ça,

l'alias est le bon ?
le champ sur lequel le positionnement doit se faire est bien présent dans la dom ?
Posté le 24 août 2022 - 14:41
Qu'appelles-tu la dom ?

J'ai essayé un scénario basique avec en Init de page sNomChamp = BTN_x..alias (BTN_x est situé vers le bas de la page).
Le "Trace(sNomChamp)" me renvoie "19".

En load de la page j'ai mis Pagepostion("",sNomChamp) .
La page reste positionnée sur le haut.

Grrr...
Posté le 24 août 2022 - 14:43
J'ai aussi essayé un champ de saisie plutôt qu'un bouton.
Même constat
Posté le 24 août 2022 - 15:20
DOM = document object model
C'est le code html de votre page.
Le javascript va tenter de positionner la page sur cet élément.
ça ne peut fonctionner que si l'élément en question est bien présent dans la page.
ça ne fonctionnera pas par exemple si un de ses parents est en display : none.

un test simple pour commencer est de trouver l'alias de votre champ.
Dans la DOM ça correspond à son id.
Ex : A75

Dans votre event chargement de page (navigateur) placer :
PagePosition("","A75")
Posté le 24 août 2022 - 15:35
Je viens de voir qu'on ne peut pas fournir l'alias du champ en direct ce qui est un peu dommage :P.
ça dit que le champ "A75" n'existe pas.

je viens de retester chez moi en fournissant l'alias du champ dans une variable de type chaine et ça fonctionne bien.
La fonction de webdev doit appeler un JS dans le genre suivant :
document.getElementById("M6").focus();

Rien de bien compliqué donc à priori ?
Posté le 24 août 2022 - 17:05
Ca passe !!
Merci pour ton aide et pour ton temps passé