ExtJS组合框不显示值

时间:2013-10-08 14:57:10

标签: extjs combobox render

我有一个用于网格列的组合框编辑器。它也是可编辑的。组合框的商店有autoLoad配置,设置为false意味着当用户点击组合框时,商店被加载。如果我没有在组合框中键入任何内容并单击它,它工作正常。但是,如果我首先在组合框中键入内容,然后单击外部,然后再次单击组合框以加载下拉列表,它根本不会渲染。它只显示加载,然后不显示下拉。

这是一个非常奇怪的问题,因为我对其他列也有类似的组合框,但它们工作正常,但它们不可编辑。

我已经打破了很多天,但没有解决方案!有人可以帮忙吗?

    editor: {
        xtype: 'combobox',
        store: contextDropDownStoreforFactGrid,
        queryMode: 'remote',
        id: 'fact_contextId',
        displayField:'context',
        valueField: 'context',
        vtype: 'alphanum',
        listeners: {
                    beforeQuery: function(query) {
                        contextDropDownStoreforFactGrid.removeAll();
                        contextDropDownStoreforFactGrid.load();
                    }
                }
            }

商店

    var contextDropDownStoreforFactGrid = Ext.create('Ext.data.Store', {
    fields: [{name:'context',type:'string'}],
     proxy: {
         type: 'ajax',
         url: context + '/FcmServlet',
         extraParams: {
             'action': 'getContextDropDownValues'
         },
         reader: {
             type: 'json'
         }
     },
     autoLoad: false
});

json是:

    [{"context":"Uplift"},{"context":"QTCUplift"},{"context":"MSRP"},{"context":"Khanij"}]

3 个答案:

答案 0 :(得分:0)

我不知道你为什么要在问题之前加载商店,我的意思是:

listeners: {
            beforeQuery: function(query) {
                contextDropDownStoreforFactGrid.removeAll();
                contextDropDownStoreforFactGrid.load();
            }
        }
    }

如果您删除上面这段代码会发生什么? 你认为它不会加载商店吗?我不认为,就像往常一样它应该加载。 我想问题是你在加载之前删除记录,这根本不是必需的

contextDropDownStoreforFactGrid.removeAll();
  

因为根据API

beforequery :( Object queryEvent)在处理所有查询之前触发

我认为在查询事件之前不需要明确处理。

答案 1 :(得分:0)

beforeQuery 中再次设置 displayField valueField ,它会将此问题排除在外。

答案 2 :(得分:0)

删除侦听器代码并将以下属性添加到组合框

queryMode: 'local'

代替代码中的“远程”