0

我有一个网格列的组合框编辑器。它也是可编辑的。组合框的存储有 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"}]
4

3 回答 3

0

我不知道您为什么要在查询之前尝试加载商店,我的意思是:

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

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

contextDropDownStoreforFactGrid.removeAll();

因为根据 API

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

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

于 2013-10-09T10:10:16.763 回答
0

在beforeQuery中再次设置displayFieldvalueField就可以解决这个问题。

于 2018-04-26T04:44:10.140 回答
0

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

queryMode: 'local'

而不是代码中的“远程”

于 2018-04-26T05:12:56.690 回答