簡體   English   中英

使用本地JSON數據填充ExtJS 3.4組合框

[英]Populate ExtJS 3.4 combobox with local JSON data

我正在使用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,甚至明確告知:mystore.loadData(my_variable);

有人可以試着告訴我我做錯了什么嗎? 在fireBug中,我得到的錯誤如“this.data未定義”,“this.reader未定義”,或“b未定義”和“h未定義”。

當我將數據格式更改為javascript數組時,會出現同樣的錯誤:

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

並在商店“data”屬性上調用dataexample。

我絕對迷路了......

變量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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM