[转]ExtJs中的Store

store是一个存储数据对象Model的集合缓存,他可以为extjs的可视化组建提供数据(GridPanel,ComboBox)等

类结构

Ext.data.AbstractStore

Ext.data.Store  没有特殊情况这个类就可以满日常的开发了

Ext.data.ArrayStore

Ext.data.DirectStore

Ext.data.ArrayStore  内置辅助的类

Ext.data.JsonStroe   内置辅助的类

Ext.data.TreeStore

Ext.data.Store使用

参数

autoLoad(Boolean/Object) : 自动加载数据,自动调用load

data(Array) : 内置数据对象的数组,初始化的是就要被装在

model(Model): 数据集合相关的模型

fields(Field):字段的集合,程序会自动生成对于的Model

方法

each( Function f, [Object scope] ) : void 变量数据中的Model

代码举例:

[javascript] view plaincopy

  1. Ext.onReady(function(){
  2. //定义了一个person的model
  3. //     Ext.define("person",{
  4. //       extend:"Ext.data.Model",
  5. //       fields:[
  6. //        {name:"name"},
  7. //        {name:"age"}
  8. //       ]
  9. //     });
  10. //创建了一个store数据集
  11. var s=new Ext.data.Store({
  12. //store可以自己定义fields,省略model
  13. fields:[
  14. {name:"name"},
  15. {name:"age"}
  16. ],
  17. //如果使用了代理以后,就可以省略store的data属性了
  18. proxy:{
  19. type:"ajax",
  20. url:"person.jsp"
  21. }
  22. //        data:[
  23. //        {name:"hanhan313",age:23},
  24. //        {name:"hanhan313",age:22}
  25. //         ],
  26. //model:"person"
  27. //autoLoad:true
  28. });
  29. //     s.each(function(model){
  30. //       //Ext.Msg.alert("title",model.get("name"));
  31. //     alert(model.get("name"));
  32. //     });
  33. //除了自动加载,也可以手动加载,如果使用了代理的话应该使用手动加载,因为使用自动加载的话,在遍历的使用数据还在异步加载,没有获取到
  34. s.load(function(records,operation, success) {
  35. Ext.Array.each(records,function(model){
  36. alert(model.get("name"));
  37. });
  38. });
  39. });

person.jsp页面:

json格式的数据:

<%

response.getWriter().write("[{name:‘hanhan313‘,age:26},{name:‘hahaha‘,age:34}]");

%>

时间: 2024-11-08 00:47:37

[转]ExtJs中的Store的相关文章

Extjs中Store小总结

http://blog.csdn.net/without0815/article/details/7798170 1.什么是store? Store类似于一个本地仓库(即数据存储器),包括有 ArrayStore,DirectStore,GroupingStore,JsonStore,XmlStore(都是store的子类) 最终主要用于提供给panel去显示. Store由Proxy(数据源)和DataReader(解读数据)组成. 一.(Proxy)数据源:一般是后台的值,习惯性的把它转换成

ExtJS中TreeGrid的用法

如果您是第一次使用ExtJS的TreeGrid的话,我相信总会有一些小麻烦的,下面就来说一说ExtJS中TreeGrid的使用. 本人使用的ExtJS版本为4.0.7,并且使用了MVC模式,如果不了解ExtJS的MVC模式的话我个觉得还是有必要去学学的, 学完后你肯定会喜欢上的. 其实在ExtJS中并没有TreeGrid这么一个类,这个说法是从EasyUI中借用过来的,ExtJS中的TreeGrid功能已经合在了Ext.tree.Panel中. TreeGrid显示出来大概是这个样子: 下面是这

EXTJS中grid的数据特殊显示,不同窗口的数据传递

//EXTJS中grid的数据特殊显示renderer : function(value, metaData, record, rowIndex, colIndex, store, view) { var USED_AMOUNT_ = 0; for (var i = 0; i < matMonthPlanHisList.length; i++) { if(matMonthPlanHisList[i].MAT_NO_ == record.get('MAT_NO_')){ USED_AMOUNT_

extjs中组件监听器里面的回调函数说明

近期在看项目源代码的时候发现了例如以下代码,当中_searchSupplierStore是JsonStore对象 _searchSupplierStore.on('beforeload',function(thiz,options){ thiz.baseParams["cusCode"]="%"+Ext.getCmp('id_cusCodetext').getValue()+"%"; thiz.baseParams["cusType&q

Extjs4中的store

Extjs 4引入新的数据包,其中新增了不少新类并对旧有的类作出了修整.使数据包更强大和更容易使用. 本章我们将学习一下内容: 2.1. 概述新特性 Extjs4的数据包引入了如Model类的新特性.同时对Store和Proxy类进行了修整.大部分的修整都是向后兼容的.最大的变化是在Record.Store和Proxy类中.Extjs4的数据包是其中一个与Sencha Touch共享的包. Model是数据包中其中一个最重要的类.它的前身是Record类.现在我们可以通过Model类来代表现实对

EXTJS中的grid显示实际行号

添加一个新的功能 [javascript] view plaincopy Ext.grid.PageRowNumberer = Ext.extend(Ext.grid.RowNumberer, { width : 40, renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){ if(store.lastOptions.params!=null){ var pageindex=store.lastOptio

Extjs中给同一个GridPanel中的事件添加参数的方法

Extjs中给同一个GridPanel中的事件添加参数的方法: this.isUse = new Ext.Action({            text:'启用',            scope:this,            handler:this.isUseWin.createDelegate (this,[1])        });        this.isNotUse = new Ext.Action({            text:'停用',            

extJS 中 ext.data 介绍

ext.data 最主要的功能是获取和组织数据结构,并和特定控件联系起来,于是,Ext.data成了数据的来源,负责显示数据. Ext.data在命名空间中定义了一系列store.reader和proxy.Grid和ComboxBox都是以Ext.data为媒介获取数据的,它包含异步加载.类型转换.分页等功能. Ext.data默认支持Array.JSON.XML等数据格式,可以通过Memory.HTTP.ScriptTag等方式获得这些格式的数据.如果要实现新的协议和新的数据结构,只需要扩展r

ExtJS中实现嵌套表格

先看效果: 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;