ExtJS ComboBox非常复杂,有很多的属性;其中有的属性是针对某一种特定的方案而设计的,不是所有情况下都有效。我想下拉选择能支持录入,并且录入时能智能提示,弄了半天可以了,但是只能是mode='local'的这种方式,即数据只能加载到本地,在本地检索;如果改成mode='remote'却不能。数据量太大想过滤后再加载不能实现了,郁闷了半天; 又过了很长时间,数据量太大加载太慢的问题一直困扰着我,如是潜心研究了一番;终于mode='remote'也可以远程过滤后加载了,录入时智能提示了。
附上代码:
new Ext.form.ComboBox({
allowBlank: true,
hideLabel: true,
width: 200,
store: new Ext.data.JsonStore({
url: "。。。",
autoDestroy: true,
fields: new Ext.data.Record.create(['Key', 'Value']),
root: "data",
autoLoad: false
}),
queryParam: 'query',
emptyText: '选择...',
valueField: 'Key',
displayField: 'Value',
editable: true,
autoLoadStore: false,
mode: 'remote',
typeAhead: true,
loadingText: '正在加载...',
minChars: 1,
forceSelection: true
});
queryParams属性指示 获取数据的方法中的过滤数据的参数
editable参数必须设置为true
mode:'remote' 表示远程模式加载数据,要想远程过滤数据必须设置为remote
typeAhead:true 列出下拉框时包含录入的字符
minChars:1 录入一个字符就远程过滤加载数据
forceSelection:true 必须是列表中的数据项才可以选择