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

Ext JS / Sencha Discussion :

Construire la liste des valeurs d'une combo


Sujet :

Ext JS / Sencha

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Points : 65
    Points
    65
    Par défaut Construire la liste des valeurs d'une combo
    Bonjour à tous,

    J'ai un formulaire contenant 2 comboBox(type_risque et facteur).
    J'ai un JsonStore avec 3 champs (Numéro, type_risque, facteur).
    Je dois présenter les valeurs "facteur" de ce JsonStore dans la seconde combo mais je ne parviens pas à en construire la liste car elle dépend du choix effectué dans la première combo.
    En effet, la liste des "facteurs" est fonction du "type_risque".

    J'ai lu des posts à propos de "query" mais je ne les comprends pas. Comment puis-je faire ?

    merci de votre aide
    cordialement

  2. #2
    Membre actif Avatar de JulienFio
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    Si j'ai bien compris ce que tu souhaites faire, le principe serait le suivant:

    -dans ta première combo tu as ton JSON type_de_risque déjà alimenté lors du render de ton formPanel.

    - dans ta deuxième combo tu n'as rien par defaut, elle est seulement renseigné si tu choisis un type_de_risque.

    Si c'est bien ça, voici comment tu pourrais procéder:

    tu définis un event sur ta première combo qui va charger la liste de la deuxième en fonction de la valeur choisie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Ext.getCmp('firstCombo').on('select', function(combo, record, index){
    storeSecondCombo.load({params:{type_de_risque: Ext.getCmp('secondCombo').getRawValue()}})
    });
    lorsque tu vas selectionner une valeur dans ta premiere combo ça va te recharger le store de ta seconde combo avec comme paramètre la valeur type_de_risque.

    Pour que cela fonctionne tu dois avoir deux store distinct, pour les deux combos

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    Merci de ton aide JulienFio

    je n'y arrive pas.
    Je reformule :

    La première combo est chargée avec les valeurs "Type de risque".
    Valeurs en faible nombre qui se trouvent dans la colonne 2 de mon JsonStore.

    La seconde combo doit fournir la liste des valeurs "facteur" (3ième colonne du JsonStore) en fonction du choix fait dans la première combo.
    en effet, on a dans le jsonstore des triplets du genre :
    1 - toto- a
    2 - toto - b
    3 - toto -c
    4 - juju - k
    5- juju - m
    ...

    donc si toto est choisi dans le type de risque, je souhaite obtenir les 3 valeurs : a, b et c dans ma seconde combo.
    MAIS si aucun choix n'est effectué dans cette première combo, je dois fournir toutes les valeurs de la colonne "facteur" !

    Pour l'instant, j'ai déjà du mal à fournir à ma seconde combo toutes les valeurs du JsonStore, juste pour essayer.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    var r_facteur = new Ext.data.JsonReader({}, [ 'code_f', 'type', 'lib_f']);  
    var Facteur = new Ext.data.JsonStore({
    			url: 'facteur.php',
    			fields: ['code_f', 'type','lib_f'],
    			reader:r_facteur,
    			autoLoad: true
    		});
    ...
     
    {
    xtype: 'combo',
    id: 'facteur', fieldLabel: "Facteur de risque générique", emptyText: "Facteur de risque",
    store: Facteur,
    displayField: 'lib_f', valueField: 'code_f', selectOnFocus: true,
    mode: 'local', typeAhead: true, editable: false, triggerAction: 'all', 
    width : 678, maxHeight : 80, 	value: ''},
    ce bout de code ne donne rien dans la seconde combo ! pourtant je reçois bien une réponse du serveur.
    Qu'est-ce qui ne colle pas ?

    Désolé d'avoir été si long, merci de ta patience

  4. #4
    Membre actif Avatar de JulienFio
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    Ok, c'est déjà plus clair là.

    Tu peux déjà commencer par enlever le reader deton JsonStore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var Facteur = new Ext.data.JsonStore({
    			url: 'facteur.php',
    			fields: ['code_f', 'type','lib_f'],
    			reader:r_facteur, // Inutile
    			autoLoad: true
    		});
    tu peux aussi supprimer la déclaration de r_facteur, tes paramètres 'url' et 'fields' de ton JsonStore suffisent.

    Pour la combo, essayes d'enlever le paramètre
    et essayes aussi de ne pas utiliser l'autoload sur le store, mais fais un load "manuellement".

    Pas sûr que ça résolve ton problème mais sait-on jamais.

    Si ça fonctionne et que ta combo est alimentée, ensuite reprend ce que j'ai dit dans le précédent message. C'est à dire de te servir de l'Event 'select' sur ta première combo pour filtrer tes facteurs. Seulement, comme tu utilise un même store pour les deux combos, je crains que ça ne te filtre les deux combos...

    Selon moi, deux store distinct serait plus pratique

  5. #5
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    Merci beaucoup Julien

    ça marche !
    Grâce à toi, j'ai compris la logique des combo en cascade.
    j'ai même essayé le "data.filter" qui marche très bien.

    Pour le problème sur le jsonStore, mystère ! De dépit, je l'ai remplacé par un SimpleStore et là, ça a fonctionné.

    En tout cas merci de ton aide.
    madMax

  6. #6
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/06/2021, 12h00
  2. [VxiR2] Ordre dans la liste des valeurs dans une invite
    Par amy0o0 dans le forum Webi
    Réponses: 1
    Dernier message: 21/04/2011, 17h59
  3. Liste des valeurs d'une matrice
    Par airballman dans le forum MATLAB
    Réponses: 2
    Dernier message: 06/05/2010, 10h50
  4. [MySQL] Perte de la liste des valeurs d'une requete sql
    Par yaya_la_rafale dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/04/2010, 14h30
  5. Réponses: 9
    Dernier message: 10/10/2008, 16h39

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