Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EXTJS:如何清除;查询「;在组合框上自动完成查询后从数据存储中选择参数_Extjs_Combobox_Datastore - Fatal编程技术网

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

EXTJS:如何清除;查询「;在组合框上自动完成查询后从数据存储中选择参数,extjs,combobox,datastore,Extjs,Combobox,Datastore,问题: 我有一个启用了自动完成功能的组合框(minchars=2),还设置了forceSelection=true。我在组合框上搜索后,例如在组合框中输入“abc”,那么列表将只显示包含字符串“abc”的记录。然后,数据存储发送到后端的查询字符串包含一个参数:“query:abc”。每次调用“combo.getStore.reload()”,请求中将包含“query:abc”参数。因此,当我调用combo.setValue(“def”)时,它不会有任何效果,因为combo的数据存储现在只包含包含

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

测试代码如下: 复制步骤:

  • 设置数据存储以查询远程服务器,服务器将返回
    • abc
    • abc1
    • def
    • ghi
    • jkl
  • 使用“设置组合值按钮”和“测试文本”文本字段将组合值设置为“def”,组合值将被成功设置
  • 在组合框中进行搜索,输入“abc”,查询将只返回2条记录:
    • abc
    • abc1
  • 选择其中任何一个
  • 重复步骤2将组合值设置为“def”,因为数据存储不包含“def”,所以不会设置该值
  • 问题:如何删除“query”参数以恢复数据存储,使其能够查询所有值

            {
                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',
            }
    
    试一试


    @利昂很高兴我能帮上忙
    combo_test.getStore().reload({params:{}});