extjs:combobox typeahead不能与querymode:remote一起使用

时间:2013-09-06 07:56:56

标签: extjs extjs4 extjs4.1

我有一个extjs组合框,其queryMode设置为remote。 我还想要其中的typeAhead功能。但是在这种情况下,打字工作会起作用。 即使在组合框中输入了一些文本,商店也会重新加载到原始数据。

这是我的代码:

var queryStore = Ext.create('Ext.data.Store', {
//autoLoad: true,
model: 'UserQuery',
proxy: {
    type: 'ajax',
    url: 'queryBuilder_getQueryList',
    extraParams: {
        tableId: this.title
    },
    reader: {
        type: 'json'
    }
},
listeners: {
    load: function () {
        var combo = Ext.getCmp('cmbQueryList');
        var lst = this.last();
        if (lst)combo.setValue(lst.data);
    }
}

});


var queryCombo = new Ext.form.ComboBox({
    width: 200,
    id: 'cmbQueryList',
    store: queryStore,
    valueField: 'queryID',
    displayField: 'queryName',
    typeAhead: true,
    forceSelection: true,
    emptyText: 'Select Query...',
    queryMode: 'remote',
    triggerAction: 'query',
    selectOnFocus: true,
    allowBlank: false,
    editable: true
 });

请建议如何让typeAhead和querymode远程协同工作。

2 个答案:

答案 0 :(得分:0)

这段代码为我塞了。我猜你的商店属性自动加载是真的,所以当你要选择组合框它去服务器并重新加载数据。请删除商店自动加载属性true。然后它的工作。

new Ext.form.ComboBox({  

    fieldLabel:'Apps',
    displayField: 'name',
    valueField: 'id',
    typeAhead: true,
    listWidth : 345,
    store: myStore(),
    forceSelection: true,
    triggerAction: 'all',
    mode:'remote',
    maxLength: 50,
    editable: false,
    anchor : '90%',
    selectOnFocus:true

 }),

答案 1 :(得分:0)

以下代码对我有用。我们必须将modequeryMode都指定为local

var queryCombo = new Ext.form.ComboBox({
    width: 200,
    id: 'cmbQueryList',
    store: queryStore,
    valueField: 'queryID',
    displayField: 'queryName',
    emptyText: 'Select Query...',
    queryMode: 'local',
    mode: 'local'
 });