冷雨在线
EasyJWEB,JavaScript,Spring,JPA,MySql
半路出家,现在混JAVA.
我的首页
文章
相册
圈子
留言
管理
 
    当前所在页面:首页>>文章>>《ExtJS2.0实用简明教程》之Store
《ExtJS2.0实用简明教程》之Store
    作者:小雨 来源: 发表时间:2008-02-24

 
 

《ExtJS实用开发指南》印刷版3月10号推出,赶快去看看吧。 

  Store可以理解为数据存储器,可以理解为客户端的小型数据表,提供缓存等功能。在ExtJS中,GridPanel、ComboBox、DataView等控件一般直接与Store打交道,直接通过store来获得控件中需要展现的数据等。一个Store包含多个Record,同时Store又包含了数据来源,数据解析器等相关信息,Store通过调用具体的数据解析器(DataReader)来解析指定类型或格式的数据(DataProxy),并转换成记录集的形式保存在Store中,作为其它控件的数据输入。
  数据存储器由Ext.data.Store类定义,一个完整的数据存储器要知道数据源(DataProxy)及数据解析方式(DataReader)才能工作,在Ext.data.Store类中数据源由proxy配置属性定义、数据解析(读取)器由reader配置属性定义,一个较为按部就班创建Store的代码如下:

var MyRecord = Ext.data.Record.create([
	    {name: 'title'},
	    {name: 'username', mapping: 'author'},
	    {name: 'loginTimes', type: 'int'},
	    {name: 'lastLoginTime', mapping: 'loginTime', type: 'date'} 
		]);
	var dataProxy=new Ext.data.HttpProxy({url:"link.ejf"});
	var theReader=new Ext.data.JsonReader({
	    totalProperty: "results",  
	    root: "rows",              
	    id: "id"                   
		},MyRecord);
	var store=new Ext.data.Store({		
			proxy:dataProxy,
			reader:theReader
		});
	store.load();

  当然,这样的难免代码较多,Store中本身提供了一些快捷创建Store的方式,比如上面的示例代码中可以不用先创建一个HttpProxy,只需要在创建Store的时候指定一个url配置参数,就会自动使用HttpProxy来加载参数。比如,上面的代码可以简化成:

 

var MyRecord = Ext.data.Record.create([
	    {name: 'title'},
	    {name: 'username', mapping: 'author'},
	    {name: 'loginTimes', type: 'int'},
	    {name: 'lastLoginTime', mapping: 'loginTime', type: 'date'} 
		]);
	var theReader=new Ext.data.JsonReader({
	    totalProperty: "results",  
	    root: "rows",              
	    id: "id"                   
		},MyRecord);
	var store=new Ext.data.Store({	
	url:"link.ejf",
			proxy:dataProxy,
			reader:theReader
		});
	store.load();

  虽然不再需要手动创建HttpProxy了,但是仍然需要创建DataReader等,毕竟还是复杂,ExtJS进一步把这种常用的数据存储器进行了封装,在Store类的基础上提供了SimpleStore、SimpleStore、GroupingStore等,直接使用SimpleStore,则上面的代码可以进一步简化成下面的内容:

var store=new Ext.data.JSonStore({		
		url:"link.ejf?cmd=list",
		totalProperty: "results",  
   	 	root: "rows",
		fields:['title',   {name: 'username', mapping: 'author'},
	    {name: 'loginTimes', type: 'int'},
	    {name: 'lastLoginTime', mapping: 'loginTime', type: 'date'} 
		]	
	});
	store.load();

上一篇:《ExtJS2.0实用简明教程》之Record   下一篇:《ExtJS2.0实用简明教程》之DataReader

 
 

(阅读 )   评论数(:11)
评论】 【收藏】
评论:共11条
这篇文章错误百出
评论人: peng     评论时间: 2008-04-10 15:13:27
有看有推,謝謝。
评论人: jck11     评论时间: 2008-05-07 11:33:33
果然错误百出,不知所云
评论人: e     评论时间: 2008-06-05 15:07:25
恩,确实错的比较多..可能贴的时候不仔细吧.不过还是有收获.
至少知道了reader读出来的数据是存在Record里面的。哈哈
评论人: 匿名用户     评论时间: 2008-06-30 16:27:10
有些人,免费吃了别人的苹果还挑三拣四的。。。


-------------------
林子很大,鸟很多
评论人: 某男     评论时间: 2008-12-20 01:23:06
写的也太差了点吧~~~~
评论人: 匿名用户     评论时间: 2011-03-16 23:32:22
What an awesome way to explain this-now I know everytnhig!
评论人: NnpBvABgbFfcbHhRb     评论时间: 2013-01-04 06:07:41
iX3THM  <a href="http://krboftsxnskj.com/">krboftsxnskj</a>
评论人: gvfIDQQpFBXfPLFB     评论时间: 2013-01-04 18:45:02
RanEWb  <a href="http://havsaftlcssp.com/">havsaftlcssp</a>
评论人: sdxwarvhgSz     评论时间: 2013-01-07 17:24:05
评论人: BrettfrinI     评论时间: 2017-06-13 21:28:35
wh0cd500038 <a href=http://buspar.schule/>buspar</a> <a href=http://zocor.reisen/>zocor</a> <a href=http://acyclovir.systems/>acyclovir</a>
评论人: BrettfrinI     评论时间: 2017-07-31 01:50:58

发表评论:
发表人:
评论: 
验证码:
请输入前面图中的四位验证码,字母不区分大小写
  
 
关于我们 | 诚聘英才 | 联系我们 | 广告业务 | 网站地图 | 法律声明

EasyJF开源团队版权所有  建议使用1024*768分辨率