2012-12-24 18 views
6

sto usando ExtJS 3.4 e ho bisogno di popolare una casella combinata con i seguenti dati:Popola ExtJS combobox 3.4 con i dati JSON locali

"[{"cod_domini":"1","nom_domini":"Sant Esteve de Palautordera"},{"cod_domini":"2","nom_domini":"Parc Natural del Montseny"},{"cod_domini":"5","nom_domini":"Sant Pere de Vilamajor"},{"cod_domini":"6","nom_domini":"Santa Maria i Mosqueroles"}]" 

che arriva formare un XMLHttpRequest precedente, e li ho memorizzati in una variabile in modo da:

my_variable = "[{"cod_domini":"1","nom_domini":"Sant Esteve de Palautordera"},{"cod_domini":"2","nom_domini":"Parc Natural del Montseny"},{"cod_domini":"5","nom_domini":"Sant Pere de Vilamajor"},{"cod_domini":"6","nom_domini":"Santa Maria i Mosqueroles"}]" 

così, ho il seguente ExtJS combobox 3.4:

cbxSelDomini = new Ext.form.ComboBox({ 
          hiddenName: 'Domini', 
          name: 'nom_domini', 
          displayField: 'nom_domini', 
          valueField: 'cod_domini', 
          mode: 'local', 
          triggerAction: 'all', 
          listClass: 'comboalign', 
          typeAhead: true, 
          forceSelection: true, 
          selectOnFocus: true, 
          store: mystore 
}); 

Questa combinazione scatola è dovuto inviarci per ottenere dati da un Ext.data.Store ho chiamato "mystore":

store: mystore = new Ext.data.Store({ 
            autoload: true, 
            reader: new Ext.data.ArrayReader(
             { 
              idIndex: 0 // id for each record will be the first element 
             }), 
            data: dataprova, 
            fields: [ 
                 {type: 'integer', name: 'cod_domini'}, 
                 {type: 'string', name: 'nom_domini'} 
                ] 
            }), 

Il mio primo problema è che in primo grado, i dati non viene caricato per archivio dati, anche dicendo esplicitamente: mystore.loadData (my_variable);

Qualcuno può provare a dirmi cosa sto facendo male? In fireBug ricevo errori come "this.data non è definito", "this.reader non è definito", o "b non è definito" e "h non è definito".

Lo stesso tipo di errori arrivano quando cambio formato dei dati come array di JavaScript come:

var dataexample = [[1, 'Sant Esteve de Palautordera'], [2, 'Parc Natural del Montseny']]; 

e chiamo dataexample sul deposito "di dati" proprietà.

Sono assolutamente perso ...

risposta

7

dati a variabile my_variable è in formato JSON, dovrebbero essere utilizzati in modo JsonReader. Per usare quel lettore puoi usare semplicemente JsonStore. Esempio:

var data = '[{"cod_domini":"1","nom_domini":"Sant Esteve de Palautordera"},{"cod_domini":"2","nom_domini":"Parc Natural del Montseny"},{"cod_domini":"5","nom_domini":"Sant Pere de Vilamajor"},{"cod_domini":"6","nom_domini":"Santa Maria i Mosqueroles"}]'; 

var mystore = new Ext.data.JsonStore({ 
    //autoload: true, 
    fields: [ 
     {type: 'integer', name: 'cod_domini'}, 
     {type: 'string', name: 'nom_domini'} 
    ] 
}); 
mystore.loadData(Ext.decode(data)); // decode data, because it is in encoded in string 

var cbxSelDomini = new Ext.form.ComboBox({ 
    hiddenName: 'Domini', 
    name: 'nom_domini', 
    displayField: 'nom_domini', 
    valueField: 'cod_domini', 
    mode: 'local', 
    triggerAction: 'all', 
    listClass: 'comboalign', 
    typeAhead: true, 
    forceSelection: true, 
    selectOnFocus: true, 
    store: mystore 
}); 

campione di lavoro: http://jsfiddle.net/Ajnw7/

+0

Ciao e grazie per la risposta. Ho quasi funzionato seguendo il tuo esempio. Per popolare combobox ho bisogno di dire mystore.loadData (Ext.decode ...) esplicitamente su firebug dato che non viene popolato automaticamente quando carico l'app. In altre parole, il programma ignora la frase mystore.loadData (Ext.decode ...) quando viene caricata l'app. Credo che questo sia perché ho ottenuto tutta questa procedura all'interno di una funzione. Ho ragione? Cosa dovrei fare per risolvere questo problema? –

+0

L'ho già risolto. Grazie mille! –

+4

se hai risolto potrebbe per favore mettere la risposta per quelli di noi con lo stesso problema? Grazie! –

Problemi correlati