Page 1 sur 1

Actualisation zone de liste

MessagePublié: 02 Oct 2012 à 11:38
par kochiz
Bonjour,

En web, je dois mettre à jour une liste de choix en fonction du choix dans une autre sur le même masque.

C'est de l'existant et la propriété du champ 1er choix est de ne pas actualiser les champs à chaque nouveau mot clé, il y a une fonction JS spéciale selectionListe dans ce masque !

Du coup je tente d'utiliser cette biblio http://forum.dominoarea.org/viewtopic.php?f=19&t=21936

Mais pour avoir les résultats je dois cliquer dans mon champ résultat, ce qui n'est pas terrible, dans ce champ j'ai bien mis actualiser champs à chaque nouveau mot clé.

Le résultat de la requette peut sans doute alimenter un tableau JS :?: mais je préfère si possible passer par ce champ Notes.

Si vous avez des idées :wink: je suis preneur.

Re: Actualisation zone de liste

MessagePublié: 02 Oct 2012 à 11:46
par Michael DELIQUE
désolé, mais je comprend rien

Re: Actualisation zone de liste

MessagePublié: 02 Oct 2012 à 13:36
par roubech
je n'ai pas regardé en détails tout ton post, mais pour des "listes imbriquée"
- soit tu procèdes comme en Notes avec les propriétés mettre à jour le doc sur le champ 1 et mettre à jour les choix sur le champ 2. Et Domino va se charger de faire l'aller-retour serveur pour mettre à jour la liste 2. Il faut être conscient que dans le cas il y a un submit, doc si tu as de la validation de champ côté client sur le onSubmit, il est appellé dans ce cas aussi ...
- soit tu charges dans un tableau JS avec toutes les options. Dans le onchange du champs 1 tu utilises ce tableau pour charger la liste de choix du champ 2. L'inconvénient de cette solution c'est que tu charges tout même si tu n'en a pas besoin et si tes listes sont grandes ...
- soit tu fais des requêtes ajax pour récupérer la liste de choix quand tu changes la valeur dans le champ 1

Re: Actualisation zone de liste

MessagePublié: 02 Oct 2012 à 13:55
par kochiz
Michael DELIQUE a écrit:désolé, mais je comprend rien

C'est que je pose mal le problème :wink:

Je dois ajouter des informations sur un masque existant.
Sur ce masque j'ai deux champs de type zones de liste dont la case à cocher "actualiser champs à chaque nouveau mot clés" est décoché.
La fonction "selectionListe" (la même que celle utilisée par Domino) est présente et modifiée dans l'entête JS de ce masque.

Je dois ajouter deux zones de listes sur ce masque, les valeurs de ces zones sont fonctions de celle sélectionnée dans ma liste existante.

Je passe donc à l'aide de la fonction http://forum.dominoarea.org/viewtopic.php?f=19&t=21936 qui me retourne les résultats.

Seulement pour visualiser les résultats je dois cliquer dans la liste des résultats et positionner ce champ avec "Actualiser champ à chaque nouveau mot clé".


Je viens de lire la réponse de Roubech, et c'est bien vers de l'Ajax que je dois me tourner car je ne souhaite pas faire de submit et les listes sont conséquentes.

Le site domlike.net étant hors ligne c'est dommage car je crois qu'il y avait des articles là dessus. :cry:

Re: Actualisation zone de liste

MessagePublié: 02 Oct 2012 à 14:06
par Michael DELIQUE
re,

sit u fais de l'ajax, tu dois faire tout le traitement en JS avec comme déclencheur le onchange...

oui domlike est hs, mais je l'ai aspriré...

Re: Actualisation zone de liste

MessagePublié: 02 Oct 2012 à 14:15
par kochiz
Michael DELIQUE a écrit:re,

sit u fais de l'ajax, tu dois faire tout le traitement en JS avec comme déclencheur le onchange...

oui domlike est hs, mais je l'ai aspriré...


Je regarde et vous tiens au courant, j'ai un comportement curieux sur ce masque car il n'est pas sauvegardé, tous les champs ne sont pas réactualiser et la fonction selectionListe est modifiée.

Re: Actualisation zone de liste

MessagePublié: 02 Oct 2012 à 14:20
par kochiz
En fait je bute sur l'exploitation du retour qui n'est que du JS mais je vais l'avoir, je l'aurai :twisted:

Re: Actualisation zone de liste

MessagePublié: 02 Oct 2012 à 14:58
par kochiz
J'appelle le onchange de ma liste à alimenter (Liste2).

J'ai bien les informations qui remontent dès que je sélectionne un élément de ma première liste (Liste1) :D

Le champ Liste2 doit avoir actualiser à chaque nouveau mot clé et dans la fonction j'ai mis
Code : Tout sélectionner
XHRequest.async=false;


Le hic c'est que en fin de fonction Liste1 se positionne sur la valeur initiale :cry:

Re: Actualisation zone de liste

MessagePublié: 02 Oct 2012 à 15:16
par Michael DELIQUE
salut

la maj du champ est a faire en JS et c'est en Js que tu donne la valeur d'affichage

Re: Actualisation zone de liste

MessagePublié: 02 Oct 2012 à 15:36
par kochiz
C'est bien ce que fais (enfin je pense :? )

Code : Tout sélectionner
nLigne = f.Nom.selectedIndex;
cle = f.Code.options[nLigne].text;
f.Profils.innerText = dbLookup("","", "PRFCOD", cle, 2,"",true);


C'est ce qui est sur le onchange de mon champ Profils (Liste2).

C'est appelé via selectionListe du champ Code ou Nom (Liste1).

Lorsque je choisis une valeur dans Liste1, les infos dans Liste2 sont bien correctement chargées mais la position de la Liste1 redevient l'initiale (avant sélection).

Re: Actualisation zone de liste

MessagePublié: 02 Oct 2012 à 16:02
par Michael DELIQUE
il faut realimenter ta liste directement en JS

Re: Actualisation zone de liste

MessagePublié: 02 Oct 2012 à 16:11
par kochiz
C'est bien çà, je veux passer par un champ Notes (dont finalement je ne sers pas) :(

Je vais alimenter ma liste (Liste2) en JS avec les résultats de la requete qui doit me renvoyer un tableau si j'ai bien lu.

Je vois çà jeudi et vous tiens informé.

Merci pour les conseils :wink:

Re: Actualisation zone de liste

MessagePublié: 03 Oct 2012 à 13:09
par roubech
tu parles d'une fonction selectionListe, mais c'est pas un truc natif à ma connaissance donc je ne sais pas ce qu'elle fait ....
Le champ Liste2 doit avoir actualiser à chaque nouveau mot clé

tu parles de l'option dans les propriétés du champ ? car c'est du Notes, donc passe par un aller retour serveur et un refresh de la page
f.Profils.innerText = dbLookup("","", "PRFCOD", cle, 2,"",true);

t'as une fonction JS client dbLookup ???
et quand je vois innerText je me dis que Profils est une div ?
moi je vois plutôt une fonction JS qui fait un appel ajax pour récupérer un array de valeur
et ensuite une boucle pour venir alimenter le tableau d'options de ton 2ème champ à coup de new Option(libellé, valeur) ...

Re: Actualisation zone de liste

MessagePublié: 04 Oct 2012 à 07:54
par kochiz
La fonction "selectionListe" c'est bien celle de domino (dans le source de la page).

La fonction dbLookup c'est celle ci http://forum.dominoarea.org/viewtopic.php?f=19&t=21936

Où je me trompes c'est que "Profils" est un champ Notes de type "Zone de liste".

Ce que je vais donc faire c'est récupérer les valeurs retournées dans un tableau qui sera afficher dans un div.