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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GeoRezo vous rend service, faites un don!

Merci à tous pour votre fidélité.

L'équipe GeoRezo

#1 mar. 17 octobre 2017 16:37

babef eric
Membre
Lieu: Agde
Date d'inscription: 22 juil. 2010
Messages: 17
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 - CAHM
Mon site personnel

Hors ligne

 

#2 mer. 18 octobre 2017 13:21

babef eric
Membre
Lieu: Agde
Date d'inscription: 22 juil. 2010
Messages: 17
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 - CAHM
Mon site personnel

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |