Extjs Combobox存储来自另一个对象的值

时间:2016-02-25 13:02:46

标签: extjs combobox extjs3

我有一个对象有一些值,我想在组合框中显示,我将添加到for循环中的表单面板。

这是对象object的内容 但在我的组合框中我得到数据为[对象] 这是我目前正在做的事情

        for(var i = 0; i < data.length ; i++)
{
    console.log('ad');

    var storeStates = new Ext.data.ArrayStore({
        fields: ['optionText'],

        data : [data[i].data.selectOptions.list[i].optionText]
    });

    var cb = new Ext.form.ComboBox({
        fieldLabel:  data[i].data.name,
        hiddenName: 'fieldTypeName',
        id: data[i].data.name.toString(),
        valueField: 'optionText',
        displayField: 'optionText',
        typeAhead: true,
        allowBlank: false,
        mode: 'local',
        selectOnFocus: true,
        triggerAction: 'all',
        emptyText: 'Survey Field Type',
        disabled: this.existingField,
        width: 190,
        store:  storeStates,
        listeners: {
            'select': function (combo, newValue, oldValue) {

            }
        }



    });

    Ext.getCmp('survey-field-form').add(cb);
//Ext.getCmp('survey-field-form').doLayout();


console.log('added');

}

3 个答案:

答案 0 :(得分:0)

您需要将商店定义从Ext.data.ArrayStore更改为Ext.data.Store&amp;数据为data[i].data.selectOptions.list

 var storeStates = new Ext.data.Store({
        fields: ['optionText'],
        data : data[i].data.selectOptions.list
    });

答案 1 :(得分:0)

我认为您需要像这样定义您的商店以获得正确的显示:

 var storeStates = new Ext.data.JsonStore({
                    data: data[i].data.selectOptions.list,
                    fields: [{name: "optionText", type: "string"}]
});

答案 2 :(得分:0)

我通过创建阅读器和商店并将数据推送到商店然后像这样加载商店来解决它

 // create a Record constructor:
            var rt = Ext.data.Record.create([
                {name: 'optionValue'},
                {name: 'optionText'}
            ]);
            var myStore = new Ext.data.Store({
                // explicitly create reader
                reader: new Ext.data.ArrayReader(
                    {
                        idIndex: 0  // id for each record will be the first element
                    },
                    rt // recordType
                )
            });
            var myData = [];

            for(var j = 0; j < data[i].data.selectOptions.list.length; j++)
            {

                var optionText = data[i].data.selectOptions.list[j].optionText.toString();
                var optionValue = data[i].data.selectOptions.list[j].optionValue.toString();

                myData.push([optionValue, optionText]);

            }

            myStore.loadData(myData);

希望这有助于其他人