繁体   English   中英

扩展单击时Extjs空组合框值

[英]Extjs empty combo box value on expand click

我创建了延迟加载组合框,它按输入的值查询数据。 但是当我从数据库加载值时我有问题,我点击展开列表按钮,它发送带空掩码的请求而不是取组合框的值,看来,由于某种原因,该值为空值。

这是我的组合框:

editor : {
            xtype : 'lazycombo',
            minChars : 1,
            pageSize : 20,
            id : 'tax-code-combo',
            store : 'TaxCodesStore',
            triggerAction : 'all'
        }

这是请求参数:

limit   20
mask    
organizationId  108
start   0

mask是空的而不是在设置值之前。

感谢帮助

我的商店:

TaxCodesStore = Ext.extend(Ext.data.JsonStore, {
constructor : function(cfg) {
    cfg = cfg || {};
    TaxCodesStore.superclass.constructor.call(this, Ext.apply({
        storeId : 'TaxCodesStore',
        api : {
            read : 'taxCode/getPagedList'
        },
        root : 'data',
        baseParams : {
            organizationId : 0
        },
        idProperty : 'taxCode',
        fields : [ {
            mapping : 'taxCode',
            name : 'value'
        }, {
            mapping : 'taxCode',
            name : 'label'
        }, {
            name : 'orgId',
            type : 'int'
        }, {
            name : 'percentageRate',
            type : 'int'
        } ]
    }, cfg));
}
});

new TaxCodesStore();

更新

我在调查后发现,组合框方法getValue()返回值,但由于某种原因未在请求时设置为存储参数掩码。

“store”属性mast是对此类Ext.data.Store对象的引用:

store: Ext.create('TaxCodesStore', { ... });

还需要配置“displayField”和“valueField”属性。

UPD

    {
        xtype : 'lazycombo',
        minChars : 1,
        pageSize : 20,
        id : 'tax-code-combo',
        store : new TaxCodesStore(), // <---
        triggerAction : 'all',
        displayField: 'origId', // <---
        valueField: 'value' // <---
    }

也许会对你有所帮助

HTML

<div id="cmb"></div>

使用Javascript

Ext.onReady(function(){
    var store = Ext.create('Ext.data.Store', {
        fields: ['id', 'attr'],
        proxy: {
            type: 'ajax',
            api: {
                read: '/someurl'
            },
            reader: {
                type: 'json',
                root: 'data',
                successProperty: 'success',
                totalProperty: 'total'
            }
        }
    });
    var cmb   = Ext.create('Ext.form.field.ComboBox', {
        triggerAction: 'all',
        store: store,
        displayField: 'attr',
        valueField: 'id',
        queryMode: 'remote',
        listeners: {
            beforequery: function(){
                this.getStore().getProxy().extraParams.mask = this.getValue();
            }
        }
    });


    cmb.render('cmb');

})

调试源后,我发现问题所在。

这是因为triggerAction : 'all',我删除它,现在我的组合工作完美

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM