Extjs combox的详解
写了哈extjs当中的combox,第一次写,照着网上的例子抄.在上次的例子中,是实现了,可是有一个重大的错误.也就是自己根本没有理解combox从远程服务器获取数据,和本地获取数据有什么不同...所以上次的例子中,运行起来好久得不到数据...
本地获取数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
Ext.onReady( function () { var store = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: "./Admin/Data/ComBoxData.ashx" }), reader: new Ext.data.JsonReader({ totalProperty: "totalProperty" , root: "result" , fields: [{ name: 'Id' }, { name: 'Text' }] }) }); store.load(); var cb = new Ext.form.ComboBox({ id: "cbText" , store: store, loadingText: 'loading...' , emptyText: "--请选择--" , triggerAction: "all" , //请设置为"all",否则默认为"query"的情况下,你选择某个值后,再此下拉时,只出现匹配选项,如果设为"all"的话,每次下拉均显示全部选项 mode: "local" , valueField: "Id" , displayField: "Text" , selectOnFocus: true , resizable: true , //可以改变大小 typeAhead: true , //延时查询 typeAheadDelay: 3000 , editable: true , //可以编辑 renderTo: document.body }); }); |
在上述代码中,mode:"local",这个过程就是..先从服务器端获取json数据保存到store对象中,然后再加载到comboBox当中...
第二种远程获取数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
Ext.onReady( function () { var store = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: "./Admin/Data/ComBoxData.ashx" }), reader: new Ext.data.JsonReader({ totalProperty: "totalProperty" , root: "result" , fields: [{ name: 'Id' }, { name: 'Text' }] }) }); Ext.data.Record.create([ { name: 'Id' , mapping: 'Id' }, { name: 'Text' , mapping: 'Text' } ]); var cb = new Ext.form.ComboBox({ id: "cbText" , store: store, loadingText: 'loading...' , emptyText: "--请选择--" , triggerAction: "all" , //请设置为"all",否则默认为"query"的情况下,你选择某个值后,再此下拉时,只出现匹配选项,如果设为"all"的话,每次下拉均显示全部选项 mode: "remote" , valueField: "Id" , displayField: "Text" , selectOnFocus: true , resizable: true , //可以改变大小 //typeAhead: true, //延时查询 //typeAheadDelay:3000, editable: true , //可以编辑 renderTo: document.body }); }); |
这时候,我们要一定要理解ext.data中的record对象和store对象,API中翻译的描述:Store类封装了一个客户端的Record对象的缓存.而load事件是当一笔新的Record加载完毕后触发。Record类不但封装了Record的相关定义信息,还封装了Ext.data.Store里面所使用的Recrod对象的值信息, 并且方便任何透过Ext.data.Store来访问Records缓存之信息的代码。(可选的) 如果使用的是Ext.data.Reader,这是一个Reader能够获取数据对象的数组值创建到Record对象下面的对应的映射项; 如果使用的是Ext.data.JsonReader,那么这是一个javascript表达式的字符串, 能够获取数据的引用到Record对象的下面;
个人理解..