【问题标题】:Values not being added to combobox dynamically未动态添加到组合框的值
【发布时间】:2015-08-03 00:22:23
【问题描述】:

我有一个组合框,我需要通过我通过 AJAX 调用检索的 json 格式字符串填充其值。

这是我检索到的字符串(存储在data

{
    "a2m":
    [
        "a2mMeeting",
        "sugar"
    ]
}

组合框必须包含a2m(这是目前字符串中唯一的名称)

这是我一直在尝试的:

方法一:

this.initAjaxCall = Ext.Ajax.request({
        url : 'indigo/restproxy/get/v1/applications/list',
        method:'GET',
        scope : this,
        success : function(result, request) {
            var data = Ext.decode(result.responseText);
            Object.keys(data).forEach(function(key) {
                console.log(key);
                Ext.getCmp('appCombo').getStore().add({appName : key});
            })
        }
});

this.appcombo = Ext.create('Ext.form.field.ComboBox', {
        id : 'appCombo',
        store: this.appStore
});

this.appStore = Ext.create('Ext.data.Store', {
    fields : [
    {
        name : 'appName',
        type : 'string'
    }
    ]
});

方法2:

this.appStore = Ext.create('Ext.data.Store', {
        fields: ['appName'],
        proxy: {
            type: 'ajax',
            url: 'indigo/restproxy/get/v1/applications/list',
            method : 'GET'
        },
        listeners: {
            load: function(store, records, successful, eOpts ) {
                store.insert(0, {
                    'appName' : 'yellow' //Trying to populate randomly using this method.
                })
            }
        }
    })


this.appcombo = Ext.create('Ext.form.field.ComboBox', {
    id : 'appCombo',
    store: this.appStore
});

在这两种情况下,组合框都不会加载任何值,我无法在下拉菜单中看到任何值。

编辑 1: 当我在添加一个元素后在控制台中打印 store.getCount() 时,该值显示为 1(通过添加两个元素进行检查,它确实显示 2)。这意味着这些值正在添加到存储中,但未显示在组合框下拉菜单中。请建议如何解决此问题。

解决方案:
事实证明,解决方案是添加语句 queryMode : 'local'。我不明白为什么这会造成问题。欢迎任何愿意阐明这一点的人这样做。

【问题讨论】:

    标签: extjs dynamic combobox add store


    【解决方案1】:

    正如您已经证明的那样,商店正在被填充。但是您还没有在组合框上设置显示字段。

    this.appcombo = Ext.create('Ext.form.field.ComboBox', {
        id : 'appCombo',
        store: this.appStore,
        displayField: 'appName'
    });
    

    displayField:绑定到此 ComboBox 的基础数据字段名称。默认为:'文本'

    valueField:绑定到此 ComboBox 的基础数据值名称。默认匹配 displayField 配置的值。

    【讨论】:

    • 感谢艾伦的帮助。我已经添加了它并尝试过,但它再次不起作用。无论如何,现在通过添加 queryMode : 'local' 解决了这个问题。我不知道为什么会这样创建和发布
    • @aayush_v20 不确定为什么需要设置 queryMode。我不需要将它与您的方法 2 一起添加,只是第一个,所以我认为它与您将数据加载到商店的方式有关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    相关资源
    最近更新 更多