EXTJS:如何在组合框上自动完成查询后从数据存储中清除“查询”参数

Posted

技术标签:

【中文标题】EXTJS:如何在组合框上自动完成查询后从数据存储中清除“查询”参数【英文标题】:EXTJS: How to clear "query" param from data store after a auto-complete query on combo box 【发布时间】:2019-11-03 20:14:25 【问题描述】:

问题: 我有一个启用了自动完成功能的组合框(minchars = 2),还设置了 forceSelection = true。在我对组合框进行搜索之后,例如在组合框中输入“abc”,则列表将只显示包含字符串“abc”的记录。数据存储区发送到后端的查询字符串包含一个参数:“query:abc”。每次我调用“combo.getStore.reload()”时,请求中都会包含“query:abc”参数。因此,当我调用 combo.setValue("def") 时,它不会产生任何影响,因为组合的数据存储现在只包含其中包含“abc”的记录。 我试图通过调用从数据存储中清除“查询”参数: delete combo.lastQuery 或者从代理中删除额外的参数,从商店中删除过滤器,它们都不起作用。

测试代码在这里: 重现步骤:

    设置数据存储查询远程服务器,服务器会返回 abc abc1 定义 吉 jkl ... 使用“设置组合值按钮”和“test_text”文本字段将组合值设置为“def”,组合值将被成功设置 在组合框上搜索,输入“abc”,则查询将只返回2条记录: abc abc1 选择其中任何一个 重复步骤 2 将组合值设置为“def”,该值将不会设置,因为数据存储不包含“def”。

问题:如何删除“查询”参数以恢复数据存储,以便查询所有值?

        
            fieldLabel: 'Test Text',
            name: 'test_text',
            xtype: 'textfield',
            allowBlank: true
        ,
        
            xtype: 'button',
            text: 'set combo value',
            handler: function () 
                var text_field = this.up('form').down('textfield[name=test_text]');
                var combo_test = this.up('form').down('combo[name=test_combo]');
                combo_test.setValue(text_field.getValue());
            
        ,
        
            xtype: 'button',
            text: 'reload store',
            handler: function () 
                var combo_test = this.up('form').down('combo[name=test_combo]');
                delete combo_test.lastQuery;
                combo_test.getStore().reload();
            
        ,
        
            fieldLabel: 'Test Combo',
            name: "test_combo",
            xtype: 'combo',
            forceSelection: true,
            minChars: 2,
            allowBlank: false,
            store: Ext.create('Ext.data.Store', 
                proxy: 
                    type: 'ajax',
                    url: pcia.Globals.backendURL('/counterparty/broker/list_physical'),
                    reader: 
                        type: 'json',
                        rootProperty: 'records',
                        totalProperty: 'count'
                    
                
            ),
            displayField: 'name',
            valueField: 'name',
        

【问题讨论】:

【参考方案1】:

试试

combo_test.getStore().reload(params:);

【讨论】:

@Leon 很高兴我能提供帮助

以上是关于EXTJS:如何在组合框上自动完成查询后从数据存储中清除“查询”参数的主要内容,如果未能解决你的问题,请参考以下文章

组合框上的 Extjs 4.2 远程过滤器

如何同步组合框和文本字段值。即如何从存储在文本字段中加载不同的值,而我正在更改组合框上的值

使用 ExtJS 过滤具有来自一个属性的值数组的存储

成功完成初始自动完成后,如何在 WinForm 文本框上重新启动自动完成?

EXTJS Combo 集问题

如何创建一个通用的 ExtJS 组合框存储?