ExtJS ComboBox非常复杂,有很多的属性;其中有的属性是针对某一种特定的方案而设计的,不是所有情况下都有效。我想下拉选择能支持录入,并且录入时能智能提示,弄了半天可以了,但是只能是mode='local'的这种方式,即数据只能加载到本地,在本地检索;如果改成mode='remote'却不能。数据量太大想过滤后再加载不能实现了,郁闷了半天; 又过了很长时间,数据量太大加载太慢的问题一直困扰着我,如是潜心研究了一番;终于mode='remote'也可以远程过滤后加载了,录入时智能提示了。
附上代码:
new Ext.form.ComboBox({ allowBlank: true, hideLabel: true, 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 必须是列表中的数据项才可以选择