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

Bibliothèques & Frameworks Discussion :

ComboBox avec Dojo


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Par défaut ComboBox avec Dojo
    Bonjour,

    J'ai quelques problèmes avec les ComboBox et Dojo.
    J'ai un ComboBox qui contient les codes postaux de France.
    J'ai un second ComboBox qui contient les ville de France.

    Actuellement, les 2 ComboBox affichent tout. Du coup, comme il y a 30000 villes (voir plus) c'est assez lent.

    Ce que je voudrais c'est que lorsque l'opérateur saisie son code postal, je fais une requête sur une base pour affiche les villes possibles avec ce CP.

    Idéalment, il faudrait :
    - Test si ComboBox des CP change -> OnChange (c'est ok)
    - Reset ComboBox des Villes -> Je n'arrive pas à le faire
    - Mettre à jour avec les nouvelles villes -> Je ne sais pas comment faire.

    Bref, beaucoup de problème.

    Si quelqu'un à la solution je lui en suis très reconnaissant.

    Merci pour votre aide.

    @+

    LGN

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Une solution efficace est de reconstruire la combo des villes si tu changes de code postal. De toute façon cela équivaudra souvent à faire ça: nouvelle requête AJAX vers le server et alimentation ou re-création de la combo des villes.Néanmoins il y a peut-être plus fin.

    Quelle version de dojo utilises tu et quel type de store ?

    ERE

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Par défaut
    Bonjour,

    Aujourd'hui le code HTML pour le ComboBox Ville est :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <select dojotype="dijit.form.ComboBox" name="Ville_Fac" id="Ville_Fac" style="width:200px" onchange="UpdateAdrsLivraison();">
          <?php ComboBoxBDD($GLOBALS['tblVille'], "Ville", "", "","", "DISTINCT Ville", "ORDER BY Ville ASC") ?>
        </select>

    Dans sur le ComboBox des CP, j'ai mis un code (OnChange) qui fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('Ville').innerHTML = null;
    Le but est déjà de remettre à 0 la liste des villes.

    Mais ceci fonctionne très bien si j'utilise un ComboBox Standard mais dès que j'utilise un Combo Dojo, plus rien ne marche.

    Du coup, je ne sais pas comment faire une reset de la liste.
    Et ensuite, je ne vois pas comment remettre à jour la liste.

    Merci.

    LGN

  4. #4
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Ok. Première info, tu n'utilises pas un store mais des éléments OPTION qui sont je suppose générés par ta fonction ComboBoxBDD. Seconde info tu utilises a priori une version "ancienne" de dojo, on va dire une 1.5.

    En interne Dojo va utiliser des OPTION pour se créer un store à la volée.

    D'après ta façon de faire, pourquoi ne pas supprimer ton élément par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    diji.byId("Ville_Fac").destroy();
    puis de regénérer ta balise SELECT et de faire un dojo.html.set(TON SELECT) ?

    Note que la logique serait plutôt d'utiliser un store de type ItemFileReadStore et de reconstruire la combo sur chaque onChange, ou mieux encore d'utiliser un dojox.JsonRestStore (en 1.5) ce qui t'éviterait d'avoir à reconstruire la combo. Note aussi que tu devrais regarder attentivement le dojox.QueryReadStore (en 1.5) qui te permet de faire un store distant assez souple. Il y a des exemples de code, notamment celui-ci: \dojox\data\tests\QueryReadStore.html qui crée un store dynamique pour une combo...

    ERE

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Par défaut
    Bonjour,

    Merci Emmanuel pour ta réponse.
    En ce qui concerne le version de dojo, j'utilise la toute dernière : 1.7.

    Par contre à la lecture de ton message, je fais peut-être fausse route sur la méthode que je veux mettre en place.

    J'ai regardé rapidement l'exemple que tu sites.
    Chez moi, il ne fonctionne pas.
    Il indique plusieurs erreurs.

    Bon ceci dit, il faut que je regarde plus en détail afin de comprendre comment cela fonctionne.

    Je vais essayé d'approfonchir ce sujet, voir si je trouve un tuto.

    Merci pour vos retours.

    @+

    LGN

  6. #6
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,

    Si tu utilises la 1.7 alors ton code n'est pas au gout du jour

    On ne fait plus de dojoType="kkkk" mais on passe par des attributs data-dojo-type compatibles avec le HTML5.

    Bon dans ce cas là le plus simple pour toi est d'utiliser pour ta liste des villes un controle dijit.form.Select. C'est en fait ce qui te conviendrait certainement le mieux, car il se rapproche d'une vraie combo (ce contrôle était avant dans le package dojox.form) et permet ajout et suppression d'OPTION.

    Donc sur ton onChange de code postal tu peux vider la boite (removeOption) et ajouter tes villes (addOption). Note au passage que si tu préfères passer par un store en écriture, il sera synchronisé avec ta combo.

    Inspire toi du code qu'il y a dans la page de test dijit/tests/form/test_Select.html il y a tout ce qu'il faut.

    ERE

Discussions similaires

  1. Comment remplir un ComboBox avec le nom des feuilles Excel ?
    Par libracom dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/06/2005, 16h14
  2. [C#] Remplir une combobox avec le champs d'une table Access
    Par Damsou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2005, 16h31
  3. PB de chargement de combobox avec une requete
    Par bubu1905 dans le forum Bases de données
    Réponses: 9
    Dernier message: 23/03/2005, 17h14
  4. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 16h29
  5. Réponses: 2
    Dernier message: 26/07/2004, 14h34

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