Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 17 October 2017 16:37

babef eric
Participant occasionnel
Lieu: Agde
Date d'inscription: 22 Jul 2010
Messages: 21
Site web

ExtJS 3.4 - comboBox en cascade

Bonjour,

Je me permets de poster ce message ici car je rencontre un problème en développement concernant la librairie ExtJS version 3.4 que j'utilise conjointement avec OL 2.

Comme le sujet l'indique, j'ai deux

comboBox


que je souhaite utiliser en cascade dans un formulaire.
Le premier est obtenu de cette façon :

Code:

var groupe_cible = new Ext.data.JsonStore({
    url : "data/fonctions_data.php?pFunction=access_group&user_id=" + p,
    fields: [
        {name: 'value', mapping: 'value', type: 'string'},
        {name: 'id', mapping: 'id_group', type: 'int'}
     ],
     autoLoad : true

});

Le résultat json de la requête est :

Code:

[{"value":"fibre","id_group":1},{"value":"eau_pluviale","id_group":2}]

Le deuxième comboBox est obtenu de cette façon :

Code:

var param_cible = new Ext.data.ArrayStore({
//pruneModifiedRecords: true,
    autoDestroy: true,
    url : "data/fonctions_data.php?pFunction=access_param&user_id=" + p,
    fields: [
            {name: 'value', mapping: 'value', type: 'string'},
            {name: 'id', mapping: 'id', type: 'int'},
            {name: 'groupcode', mapping: 'groupcode', type: 'int'}
    ],
        autoLoad : true
});

Le résultat json de la requête est :

Code:

[{"value":"vias","id":2,"groupcode":2},{"value":"cahm","id":1,"groupcode":1},{"value":"agde","id":2,"groupcode":2}]

Le lien entre les deux requêtes se fait via id_group, premier json, et groupcode, deuxième json.

Pour mettre en oeuvre mes 2 comboBox, le code est le suivant :

Code:

    id: "contenutypetraitementdict",
    x: 5,
    y: 55,
    width : 150,
    store: groupe_cible,
    emptyText:'Choisir le type de traitement',
    valueField: 'id',
    displayField: 'value',
    typeAhead: false,
    editable: false,
    mode: 'local',
    allowBlank:false,
    forceSelection: true,
    border: false,
    triggerAction: 'all',
    //lastQuery: '',
    selectOnFocus:true,
    listeners: {
       select : function(cmb, group, idx) {
            autosStore = paramCombo.getStore();
            paramCombo.clearValue();
            autosStore.clearFilter();
            autosStore.filterBy(function(item) {
                var paramCode = item.get('groupcode');
                var selected = (paramCode === group.data.id);
                return selected;
            });
            paramCombo.enable();
        }
    }
});

var paramCombo = new Ext.form.ComboBox({
    id: "contenutypetraitementdictparam",
    x: 5,
    y: 85,
    width : 150,
    store: param_cible,
    emptyText:'Choisir le type de traitement',
    allowBlank:false,
    valueField: 'id',
    displayField: 'value',
    //border: false,
    typeAhead: false,
    editable: false,
    mode: 'local',
    forceSelection: true,
    triggerAction: 'all',
    lastQuery: '',
    selectOnFocus:true
});

Ces deux comboBox sont ensuite dans un FormPanel.

Le lien se fait, cependant, j'ai une erreur que je n'arrive pas comprendre (voir l'image en PJ).
En choisissant une première valeur, la deuxième liste déroulante me propose les valeurs liées. Cependant, je ne peux choisir que la première valeur. En reprenant l'exemple en PJ, si je clique sur "agde", j'ai toujours la valeur "vias" par défaut.

Firebug ne m'aide pas beaucoup. J'ai beaucoup cherché sur le net, mais sans succès. En effet, le problème n'est pas bien clair (en tout les cas pour moi).

Je vous remercie par avance pour votre aide.
Cordialement.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Eric BABEF
Technicien SIG - GPMDLR

Hors ligne

 

#2 Wed 18 October 2017 13:21

babef eric
Participant occasionnel
Lieu: Agde
Date d'inscription: 22 Jul 2010
Messages: 21
Site web

Re: ExtJS 3.4 - comboBox en cascade

Bonjour,

J'ai trouvé la solution à mon problème.
Je passe par un

SimpleStore


Je construis mon json d'une autre manière :

Code:

[[2,2,"agde"],[1,1,"cahm"],[2,3,"vias"]]

Et j'utilise un

filter


au lieu d'un

filterby


dans le

listeners


@+


Eric BABEF
Technicien SIG - GPMDLR

Hors ligne

 

Pied de page des forums

Powered by FluxBB