我在输入typeahead上的comboxbox时遇到问题,当我输入所需的值时,组合会正确突出显示该值,但它不会过滤商店。即使在组合框中键入一些文本后,商店也会重新加载到原始数据。
这是我的商店代码。
Ext.define('Dashboard.store.Rule', {
extend: 'Ext.data.Store',
model: 'Dashboard.model.Rule',
storeId : 'Rule',
pageSize: 35,
autoSync : false,
autoLoad: true,
remoteFilter: true,
sorters : ['ruleName'],
proxy: {
type: 'ajax',
api: {
read : 'rule/view.action',
create : 'rule/create.action',
update: 'rule/update.action',
destroy: ''
},
reader: { //reads the data in the JSON Format
type: 'json',
root: 'data',
successProperty: 'success'
},
writer: {
type: 'json', //writes the data in the JSON Format
writeAllFields: true,
encode: true,
root: 'data'
},
listeners: { //Exception Handler for the Ajax Request
exception: function(proxy, response, operation){
var error = Ext.decode(response.responseText);
Ext.MessageBox.show({
title: 'REMOTE EXCEPTION',
msg: error.message,
icon: Ext.MessageBox.ERROR,
buttons: Ext.Msg.OK
});
}
}
}
});
以下是我在视图中的组合框代码
xtype: 'combobox',
id : 'ruleName',
padding : '10 30 10 20',
fieldLabel: '<html><font color = "red">*</font></html>Rule Name',
store: 'Rule',
width: screen.width*0.22,
emptyText: 'Select Rule',
typeAhead : true,
allowBlank: false,
queryMode: 'remote',
lastQuery:'',
displayField: 'ruleName',
disabled : true,
maxLength: 100,
maxLengthText: 'Maximum text size allowed 100',
listeners : {
'change' : function(){
//TODO
},
'blur' : function(){
//TODO
}
}
我也试过放triggerAction : 'all'
,但仍然无效。
请帮助解决这个问题
非常感谢
答案 0 :(得分:2)
您的商店配置了
remoteFilter: true,
告诉商店在更改过滤器时重新加载,将过滤器配置发送到服务器,因此可以应用服务器端过滤器。
服务器发回的记录不会被客户端过滤,因为服务器应该这样做。
您是否实施了过滤器服务器端?如果是这样,那么你的过滤器代码是什么?
如果您不想过滤服务器端,请将remoteFilter设置为false。