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