6

私は ExtJS 3.4 を使用しており、コンボボックスに次のデータを入力する必要があります。

"[{"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"}]"

これは以前の XMLHttpRequest のフォームであり、変数に格納されているので、次のようにします。

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"}]"

したがって、次の ExtJS 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
});

このコンボボックスは、「mystore」という名前の Ext.data.Store からデータを取得することになっています。

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'}
                                                    ]
                                    }),

私の最初の問題は、最初のインスタンスでデータが dataStore にロードされないことです。

誰かが私が間違っていることを教えてくれますか? fireBug では、「this.data is not defined」、「this.reader is not defined」、「b is undefined」、「h is undefined」などのエラーが発生します。

次のようなJavaScript配列としてデータ形式を変更すると、同じ種類のエラーが発生します。

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

ストアの "data" プロパティで dataexample を呼び出します。

私は完全に失われています...

4

1 に答える 1

7

変数のデータmy_variableは JSON 形式なので、JsonReader使用する必要があります。そのリーダーを使用するには、簡単に使用できますJsonStore。例:

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
});

作業サンプル: http://jsfiddle.net/Ajnw7/

于 2012-12-29T17:15:34.527 に答える