IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WebDev Discussion :

[WB15] Combo dans une zone répétée


Sujet :

WebDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Par défaut [WB15] Combo dans une zone répétée
    Bonjour,

    Tout d'abord,je tiens à préciser que je maitrise Windev, mais pas vraiment Webdev.

    J'ai besoin de créer une page de commande.
    J'ai donc mis une zone répétée dans cette page. Dans chaque cellule, j'affiche un article.
    J'ai une zone quantité sur cette zone. Cette quantité dépend des articles, et est donc dans une combo.
    (ex. sur certains articles, la quantité qu'on peut choisir est 5 pièces - 10 pièces - 20 Pièces, et sur d'autres, c'est 100 Gr - 200 Gr - 300 Gr)

    J'arrive à afficher cette quantité dans la combo, mais le problème ne s'arrête pas là, et je ne suis pas sûr de m'y prendre correctement.

    Dans mon programme associé au site, les quantités sont associées à des indices, et ces indices sont saisis (donc pas forcément 1-2-3...)
    On a donc pour mon exemple :
    • 1 => 5 pièces
    • 2 => 10 pièces
    • 4 => 20 pièces
    • ....

    et
    • 4 => 100 Gr (oui, il peut y avoir un 4 dans cette combo et dans la précédente, avec des textes différents)
    • 6 => 200 Gr
    • 7 => 300 Gr
    • ....

    La question est :
    Comment dois-je m'y prendre pour passer et récupérer les valeurs correctement ? (je veux récupérer les indices)

  2. #2
    Membre expérimenté Avatar de peijnoob
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 279
    Par défaut
    Malheureusement, je crois que ce que tu cherches à faire n'est pas possible.

    En effet, si je ne dis pas de bêtise, si tu changes le contenu d'une combo dans une ligne de la zone répétée, cela va changer ce contenu dans toutes les lignes en fait, du coup, tu perdras les indices des lignes précédentes.

    A partir de là, tu as plusieurs solutions :
    - créer un champ de saisie invisible dans chaque ligne de la ZR, dans lequel tu vas stocker ton indice quand l'utilisateur fais une sélection dans la combo. L'avantage ici est de garder la gestion de la combo directement par webdev, mais il te faudra la re-remplir dès qu'on change de ligne.

    - créer une fausse combo : je l'utilise souvent : un champ de saisie, une petite image pour la flèche à droite, et au clic sur le champ/l'image je fais apparaitre une cellule cachée qui contient une zone répétée qui simule une combo déroulée.
    Ici, tu as plus de souplesse sur ce que tu affiches (tu peux faire des trucs vraiment sympa) mais c'est un peu plus chiant à mettre en oeuvre (passez moi l'expression). Il faut aussi stocker l'indice dans un champ caché dans la ZR .

    - [Insérez ici les autres solutions auxquelles je n'ai pas pensé]

    Dans tous les cas, crée un attribut dans ta ZR pour stocker l'indice retourné, ça facilite pas mal les choses.

    Crée aussi un attribut pour qui gère la propriété valeurMémorisée de la combo (si c'est possible, j'ai pas webdev sous les yeux).

    Bon dev, et bon courage surtout avec webdev, c'pas tous les jours la belle vie

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Par défaut
    Citation Envoyé par peijnoob Voir le message
    En effet, si je ne dis pas de bêtise, si tu changes le contenu d'une combo dans une ligne de la zone répétée, cela va changer ce contenu dans toutes les lignes en fait, du coup, tu perdras les indices des lignes précédentes.
    En fait, j'ai créé un ATT_ValeurInit (Attribut Valeur Initiale de la combo), et je lui ajoute mes lignes comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    sChaine = [
    Valeur 1
    Valeur 2
    Valeur 3
    ]
    ZoneRepeteeAjoute(ZR_MaZoneRepetee, sChaine)
    (sChaine varie selon chaque article)
    Cet ajout me créé bien les lignes dans la combo, mais pas moyen d'attribuer les valeurs correctement.

  4. #4
    Membre expérimenté Avatar de peijnoob
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 279
    Par défaut
    Tu utilises les gLien ?

    Sinon, tu fais une fausse combo avec une cellule cachée qui contient une zone répétée, comme je disais, c'est un peu contraignant à mettre en place mais ça apporte pas mal de souplesse !

    La gestion des zones répétées en webdev peut vite devenir assez chaotique si on cherche à faire des trucs sympa.

    De notre côté, on commence souvent à les remplacer par... des champs html, dont on écrit le code dynamiquement.

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Par défaut
    Alors là tu m'intéresses...

    Remplir une combo HTML par programmation, je vois ça beaucoup plus simple à créer.
    Par contre, comment on peut récupérer la valeur une fois validé ?

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Par défaut
    Dans ta combo que tu auras écrite en html sur l'évènement onchange (je crois) tu exécute une procédure webdev navigateur qui te récupèrera ta valeur passée en paramêtre.

    Tu devrait avoir un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="procedure_webdev_nagigateur(this.value)"
    J'ai un petit doute si la procédure webdev doit être en javascript ou pas...

  7. #7
    Membre expérimenté Avatar de peijnoob
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 279
    Par défaut
    A coups de javascript.

    Tu peux gérer un évènement JS directement sur ta combo à la sélection, qui appelle une fonction navigateur qui mettrait à jour un champ qui stockerait ton indice dans la zone répétée, soit tu parcours ta combo html.

    Les fonctions navigateur Webdev sont automatiquement traduites en JS dans ta page finale, donc tu peux appeler une fonction navigateur webdev directement depuis du code javascript, ce qui est bon à savoir.

    En gros, dans ton champ HTML, tu déclares ta combo comme ça, ou un truc du genre (c'est pour l'idée, le code que je te donne n'est certainement pas interprétable hein) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <select id="combo_%1" onChange="metAJourValCombo(%2, this.selectedValue);">
    %3
    </select>
    Dans la ZR, tu crées un attribut qui gère le contenu du champ html puis quand tu remplis ta ZR :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // nInd est l'indice de la zone répétée en cours
    // sCombo contient le "template" html de la combo
     
    sChaine = [
    <option value=1" selected>Valeur 1</option>
    <option value="2">Valeur 2</option>
    <option value="3">Valeur 3</option>
    ]
     
    sCombo = ChaineConstruit(sCombo, nInd, nInd, sChaine);
     
    ATT_ComboHTM[nInd] = sCombo
    Du coup derrière, tu crées une fonction webdev qui servira à récupérer les valeurs sélectionnées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    PROCEDURE metAJourValCombo(nIndiceZR est un entier, nValSelect est un entier)
     
    // Sauvegarde des valeurs sélectionnées dans des champs qui vont bien, un attribut de la zone répétée par exemple :
     
    ATT_ValSelect[nInd] = nValSelect
    Et encore, je pense qu'on peut simplifier, car l'indice de la zone répétée en cours, le webdev, il le connait à priori, donc pas forcément besoin de le gérer, mais comme j'te dis, j'ai pas webdev là, donc je peux pas trop tester, mais l'idée est là !
    Pareil, pour le coup du this en JS, je suis pas sûr que ça existe, mais sinon tu peux utiliser un Document.GetElementById("IdDeMaCombo").selectedValue

    Voilà, j'espère que ça répond à tes questions !

    Nous on aime bien dépasser ce que webdev nous permet de faire via des champs HTML + Javascript. On perd le WYSIWYG (mais bon, c'pas plus mal je trouve, au moins, on sait ce qu'on fait) mais on gagne en contrôle du résultat final et en souplesse (on peut faire des trucs vraiment sympa !)

    Bon dev

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD16] Zone répétée dans une zone répétée.. possible ?
    Par EriCstoFF dans le forum WinDev
    Réponses: 2
    Dernier message: 05/03/2012, 14h14
  2. [WD15] HTTPJAUGE dans une Zone Répétée
    Par gabcouts dans le forum WinDev
    Réponses: 3
    Dernier message: 28/11/2011, 13h58
  3. Réponses: 3
    Dernier message: 26/08/2011, 12h04
  4. [WD15] Champs Graphe dans une Zone Répétée
    Par Grmmml dans le forum WinDev
    Réponses: 4
    Dernier message: 15/04/2010, 10h12
  5. [WD12] Affichage dans une zone répétée
    Par stephpns dans le forum WinDev
    Réponses: 7
    Dernier message: 05/06/2008, 12h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo