终极目标

——永远的博客
posts - 14, comments - 40, trackbacks - 1, articles - 1

导航

公告

ExtJS ComboBox 录入智能提示

Posted on 2014-03-11 10:52 Eric 阅读(...) 评论(...) 编辑 收藏

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 必须是列表中的数据项才可以选择