PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WEBDEV 2024 → Accéder en javascript ou code navigateur aux propriétés d'un champ dans une zone répétée
Accéder en javascript ou code navigateur aux propriétés d'un champ dans une zone répétée
Iniciado por Yves Geltmeyer, 23,may. 2016 09:28 - 10 respuestas
Miembro registrado
24 mensajes
Popularité : +2 (2 votes)
Publicado el 23,mayo 2016 - 09:28
Bonjour à tous,

Là je coince malgré l'inspection HTML de mes pages générées !

Le but est de "simplement" afficher la ligne sélectionnée dans une zone répétée SANS réafficher cette ZR.

J'ai essayé de jouer sur des attributs "HTMLAvant", "HTMLAprès", "Couleur" et "CouleurFond" de la zone répétée mais comme ce code n'est accessible qu'en code serveur et que ce code réalise une affectation du genre "MaZR[Indice].ATT_CouleurSelect = RougeClair", donc vers la liste, WebDev rafraîchi celle-ci systématiquement et ce "blink" d'écran n'est pas sexy du tout !

Le seul moyen est donc d'accéder aux propriétés en code navigateur ou en javascript mais comment référencer l'élément au sein d'une ZR en Javascript ou dans la fonction JSPropriété() ?

J'ai bien essayé de tester JSPropriété("_MAPAGE_." + ATT_CouleurSelect..Alias,"style.visibility") ="hidden" pour cacher la ligne sélectionnée (juste pour tester le principe) mais ... ça pas marche ! D'autant que "_MAPAGE_." n'est peut-être pas la bonne syntaxe ?

Auriez-vous une solution à ce problème ? Je n'arrive pas à trouver des exemples ou une doc qui marche avec JSPropriété() dans une zone répétée ... :-/

D'avance merci.
Yves.
Publicado el 23,mayo 2016 - 18:55
Dans son message précédent, Yves GELTMEYER a écrit :
Bonjour à tous,

Là je coince malgré l'inspection HTML de mes pages générées !

Le but est de "simplement" afficher la ligne sélectionnée dans une zone
répétée SANS réafficher cette ZR.

J'ai essayé de jouer sur des attributs "HTMLAvant", "HTMLAprès", "Couleur" et
"CouleurFond" de la zone répétée mais comme ce code n'est accessible qu'en
code serveur et que ce code réalise une affectation du genre
"MaZR[Indice].ATT_CouleurSelect = RougeClair", donc vers la liste, WebDev
rafraîchi celle-ci systématiquement et ce "blink" d'écran n'est pas sexy du
tout !

Le seul moyen est donc d'accéder aux propriétés en code navigateur ou en
javascript mais comment référencer l'élément au sein d'une ZR en Javascript
ou dans la fonction JSPropriété() ?

J'ai bien essayé de tester JSPropriété("_MAPAGE_." +
ATT_CouleurSelect..Alias,"style.visibility") ="hidden" pour cacher la ligne
sélectionnée (juste pour tester le principe) mais ... ça pas marche !
D'autant que "_MAPAGE_." n'est peut-être pas la bonne syntaxe ?

Auriez-vous une solution à ce problème ? Je n'arrive pas à trouver des
exemples ou une doc qui marche avec JSPropriété() dans une zone répétée ...
:-/

D'avance merci.
Yves.


Bonjour Yves
je ne comprends pas ce que tu veux faire ?
Publicado el 23,mayo 2016 - 21:15
Bonjour Yves,

tu es bien en mode ajax ?

Cordialement

--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Plus d'information sur http://fabriceharari.com
Miembro registrado
24 mensajes
Popularité : +2 (2 votes)
Publicado el 23,mayo 2016 - 21:26
Bonsoir Eric,

Je veux que lorsque l'utilisateur clique dans une zone répétée, son choix reste affiché, exactement comme dans une liste ... mais avec les fonctionnalités des ZR.

J'utilise une ZR Ajax avec un attribut "ATT_Select" lié à la couleur de fond d'un bouton de la ZR qui "recouvre" les champs affichés. Ce bouton simule le "Clic" d'une ligne de la liste. Et, en jouant sur sa couleur de fond, avec une opacité faible, je mets cette ligne en surbrillance.

Donc dans le Click serveur de ce bouton (impossible en code navigateur) je fais
ATT_Select[iSelect] = RougeClair
... ce qui provoque le réaffichage de la liste, ce que je ne veux pas !

Est-ce clair ?
Miembro registrado
30 mensajes
Popularité : +1 (1 vote)
Publicado el 25,mayo 2016 - 17:28
Comme dit précédemment utilise ajax pour seulement changer la couleur sans tout ré afficher.
Miembro registrado
24 mensajes
Popularité : +2 (2 votes)
Publicado el 25,mayo 2016 - 22:56
Merci Fabrice, merci Loïc,

Oui ma liste est en mode Ajax. Le problème, je pense, vient "bêtement" du fait que j'affecte une couleur à un attribut de la liste dans un code serveur (puisque ces attributs ne sont pas accessibles en code navigateur), et même en code serveur Ajax WebDev recharge la liste à tout les coups suite à l'instruction :
ZR_REQ_MySkts[iSelect].ATT_Select = "#008AAB" où ATT_Select est un attribut de type CouleurFond.

Raison pour laquelle je voudrais accéder en Javascript à la propriété background-color de l'attribut, mais la ligne ci-dessous est invalide en code navigateur :
JSPropriété("_PAGE_." + ATT_Select..Alias,"style.background-color") = RougeClair
car l'attribut ATT_Select fait référence à un attribut de type CouleurFond.

Donc je tourne en rond ! :-)

J'imagine qu'il y a pourtant moyen de référencer un champ d'une ligne i d'une ZR en Javascript, non ?

Bonne soirée ...
Yves
Publicado el 26,mayo 2016 - 20:46
Bonjour Yves,

> Oui ma liste est en mode Ajax. Le problème, je pense, vient "bêtement"

...du fait que ton code serveur n'est PAS en mode ajax ?

cordialement

--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Plus d'information sur http://fabriceharari.com
Miembro registrado
24 mensajes
Popularité : +2 (2 votes)
Publicado el 26,mayo 2016 - 23:14
Bonsoir Fabrice,

Si, si, mon code est aussi en serveur Ajax ...

Ceci dit, le fonctionnement de WebDev est relativement logique ... je change un attribut, donc il recharge la liste ... ! Mais cela ne m'arrange pas ! :-)

Je pensais qu'accéder au background-color d'un attribut en code navigateur ou JS était facile ... ce n'est pas le cas ?

Cordialement,
Yves.
Publicado el 27,mayo 2016 - 20:32
Bonjour Yves,

je trouve très curieux qu'avec une ZR en ajax et un un changement
d'atribut fait en code jax aussi, toute ta ZR se recharge. ce n'est PAS
le comportement normal. Est ce que ton champ est bien déclaré en dynamique ?

Et non, tu peux oublier le JS. Si tu veux accéder au contenu d'une ZR
coté navigateur, il faut une ZR navigateur

Cordialement

--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Plus d'information sur http://fabriceharari.com
Miembro registrado
24 mensajes
Popularité : +2 (2 votes)
Publicado el 02,junio 2016 - 12:39
Bonjour Fabrice,

Je reviens sur ce post car j'ai, enfin, trouvé une solution qui marche et ... cela peut servir à tout le monde !

Pour modifier le style d'un champ d'une zone répétée Ajax en code navigateur, il "suffit" de :

1° Déclarer 2 attributs, par ex, ATT_HTMLAvant et ATT_HTMLAprès, et les lier au paramètres "HTMLAvant" et "HTMLAprès" du champ dont il faut modifier le style.

2° Dans l'affichage d'une ligne de la Zone Répétée, il faut ajouter 2 lignes, par ex :
ATT_HTMLAvant = "<div id=selskt" + NumériqueVersChaîne(ATT_SktID) + " style=""opacity:0.2;"">"
ATT_HTMLAprès = "</div>"

Où ATT_SktID est un attribut de la ZR dont la valeur doit être unique dans la ZR, de façon à pouvoir référencer le champ par cette valeur.
Dans mon cas, c'est une clé unique sur 8 octets.

3° Il faut une fonction JavaScript telle que celle-ci:
function MySetSelected(sImg,bSelected)
{
if (bSelected) {
//document.getElementById("sel" + sImg).style.opacity = .3;
document.getElementById(sImg).style.backgroundColor = '#008AAB'; }
else {
//document.getElementById("sel" + sImg).style.opacity = 0;
document.getElementById(sImg).style.backgroundColor = 'transparent'; }
}

4° Qu'il suffit d'appeler en code navigateur pour modifier le style, par ex:
MySetSelected("selskt" + ATT_SktID,Vrai)

Voilou ! En espérant que cela soit compréhensible et utile !
Yves.
Miembro registrado
1.144 mensajes
Popularité : +50 (142 votes)
Publicado el 27,mayo 2018 - 17:52
Bonjour,
J'arrive un peu après la bataille mais je cherche aussi à manipuler des champs dans une ZR. Et d'après a LST 103, pour éviter le rafraîchissement de la page il que le le BOUTON soit en mode ajax, et pas seulement la ZR.

Voilà, si ça peut servir..
Thierry