`

extjs proxy reader store 用法及例子

 
阅读更多

Ext.onReady(function(){

 var cities=[

 [1,"北京"],

 [2,"上海"],

 [3,"广州"],

 [4,"深圳"],

 [5,"天津"]

 ];

 var city=Ext.data.Record.create([

 {

  name:"cid",type:"int",mapping:0

 },

 {

   name:"cname",type:"string",mapping:1

 }

 ]);

 var proxy=new Ext.data.MemoryProxy(cities);

 var reader=new Ext.data.ArrayReader({},city);

 var store=new Ext.data.Store({

 proxy:proxy,

 reader:reader,

 autoLoad:true//即使加载

 });

 var box=new Ext.form.ComboBox({

 renderTo:Ext.getBody(),

 store:store,

 triggerAction:"all",

 displayField:"cname",

 valueField:"cid",

 mode:"local",

 emptyText:"请选择一线城市名称:"

 });

});


ext.data 最主要的功能是获取和组织数据结构,并和特定控件联系起来,于是,Ext.data成了数据的来源,控制负责显示数据。


 DataProxy:获取想要的数据,通过他能得到来自不同地方的数据,如数组、远程服务 

器,并组织成不同的格式。 

 DataReader:定义数据项的逻辑结构,一个数据项有很多列,每列的名称是什么,分别 

是什么数据类型,都由该类来定义。另外,还负责对不同格式的数据进行读取和解析。 

 Store:存储器,用于整合 Proxy 和 Reader,控索取数据时通常和他打交道。 

 Ext.data. DataProxy 就是来源这样一种灵感。 


 Ext.data.DataProxy  是获取数据的代理,数据可能来自于内存,可能来自于同一域的远 

程服务器数据,更有可能来自于不同域的远程服务器数据。 


 但是,在实际应用中,我们不会直接使用  Ext.data.DataProxy,而是使用他的子类: 

 MemoryProxy、HttpProxy 和 ScriptTagProxy,他们的作用分别是: 

 MemoryProxy:获取来自内存的数据,可以是数组、json 或者 xml。 

 HttpProxy:使用 HTTP 协议通过 ajax 从远程服务器获取数据的代理,需要指定 url。 

 ScriptTagProxy:功能和 HttpProxy 一样,但支持跨域获取数据,   是实现时有点偷鸡摸 

狗。 


我们定义了一个 City 的结构,通过 Ext.data.Record.create 创建,参数是一个 json 对象数组,name 和 type 分别表示每一列的名称和数据类型,mapping 是列值与数组元素的映射关 

Record  创建 好 后 , 必须 和  DataReader  关 联 , DataReader  也 同样有 三 个 子 类: 

Ext.data.ArrayReader、Ext.data.JsonReader、Ext.data.XmlReader。我之前说过 DataReader从来不单独行动,使用哪一个子类主要取决     DataProxy 中封装的数据类型,如果是数组,则使用 Ext.data.ArrayReader;如果是 json,则使用 Ext.data.JsonReader;如果是 xml,则使用 

Ext.data.XmlReader。在本教程中,我打算将  xml  封杀。我不喜欢这个东西(尽管有时候不 

得不面对)  。相对而言,我更热衷    轻量级的 jsonObject。 


Ext.data.Record 并没有固定的结构,他保存的是一个 json 对 象数组,数组的元素个数由列的数量来决定。


分享到:
评论

相关推荐

    extjs4中文视频下载地址

    第五讲:extjs4.0的读写器reader,writer 第六讲:extjs4.0的数据集store 第七讲:extjs4.0的事件机制Event 第八讲:extjs4.0的Ajax 第九讲:extjs4.0的core包和Ext类 第十讲:extjs4.0的util包 论坛地址是: ...

    免费 Extjs4.0教程视频

    第一讲:extjs4.0概述和HELLO WORD程序 [01]EXTJS4.0的概述和HELLOWORD程序.wmv 第二讲:extjs4.0的新特性(附件较大做了分包压缩大家只要下载3个包运行001就ok了) ... 第三十讲:extjs4.0的desktop使用讲解

    EXTJS4.0视频教程配套代码

    看到其它地方 分太高,问大家省点分. 只有代码,视频请百度看. 第一讲:extjs4.0概述和HELLO WORD程序 [01]EXTJS4.0的概述和HELLOWORD程序.wmv 第二讲:extjs4.0的新特性(附件... 第三十讲:extjs4.0的desktop使用讲解

    Extjs4.0视频教程和源代码,另附文档翻译

    第一讲:extjs4.0概述和HELLO WORD程序 [01]EXTJS4.0的概述和HELLOWORD程序.wmv 第二讲:extjs4.0的新特性(附件较大做了分包压缩大家只要下载3个包运行001就ok了) ... 第三十讲:extjs4.0的desktop使用讲解

    Extjs教程源码

    第四讲: EXTJS4.0的数据代理——Proxy 第五讲: EXTJS4.0的读写器Reader, Writer 第六讲: EXTJS4.0的数据集Store 第七讲: EXTJS4.0的事件机制Event 第八讲: EXTJS4.0的Ajax 第九讲: EXTJS4.0的Core包和Ext类 第十讲: ...

    Extjs 继承Ext.data.Store不起作用原因分析及解决

    关于这个原因有很多种,我只说下我遇到的 我这样 写Store来复用的 代码如下: DocStore = Ext.extend(Ext.data.Store,{ initComponent:function(){ this.proxy = new Ext.data.HttpProxy({url:this.url}); this....

    Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)

    代码如下: var Store = Ext.create(‘Ext.data.Store’, { pageSize: pageSize, model: ‘Ext.data.Model名称’, autoLoad: false, proxy: { type: ‘ajax’, url: ‘请求路径’, getMethod: function(){ return ...

    extJs 下拉框联动实现代码

    代码如下:// 第一个下拉框 var parentStore = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: ‘loadByParentid.action?parentid=1001’ }), reader: new Ext.data.JsonReader({ root: ‘list’, id: ...

    Extjs EditorGridPanel中ComboBox列的显示问题

    为了解决这个问题需要在EditorGridPanel的ColumnModel中显示ComboBox的地方使用renderer属性,重新渲染,方法如下: 代码如下: //部门列表 var comboxDepartmentStore = new Ext.data.Store({ proxy: new Ext.data....

    Ext Js权威指南(.zip.001

    6.1.8 ext.domquery的使用方法 / 249 6.1.9 ext js选择器的总结 / 252 6.2 获取单一元素:ext.dom.element / 252 6.2.1 从错误开始 / 252 6.2.2 使用ext.get获取元素 / 253 6.2.3 使用ext.fly获取元素 / 256 ...

    ExtJs异步无法向外传值和赋值的完美解决办法

    方法是异步的,下面的方式获得的reCount始终是0,因为还没等后台的方法执行完就赋值了,此时store的record还没获得值。 var testStore = new Ext.data.GroupingStore({ proxy : new Ext.data.HttpProxy({ url : '...

    Ext 开发指南 学习资料

    看看extjs那些美丽的例子。 1.1. 一切从extjs发布包开始 1.2. 看看ext-2.0.2的文档 1.3. 为什么有的例子必须放在服务器上才能看到效果? 1.4. 为什么自己按照例子写的代码,显示出来总找不到图片 1.5. 我们还需要...

Global site tag (gtag.js) - Google Analytics