【读】Ext.data.JsonStore

 

简单的JSONSTORE
var data = [
    ['1','name1','descn1'],
    ['2','name2','descn2'],
    ['3','name3','descn3'],
    ['4','name4','descn4'],
    ['5','name5','descn5']
];//二维数组
var ds = new Ext.data.Store({
    proxy: new Ext.data.MemoryProxy(data), 
       reader: new Ext.data.ArrayReader({}, [         {name: 'id'},         {name: 'name'},         {name: 'descn'}     ])
});
ds.load();          //标准  可以作为静态数据来模拟动态的例子。
 
ds要对应两个部分:proxy和reader。proxy告诉我们从哪里获得数据,reader告诉我们如何解析这个数据。
现在我们用的是Ext.data.MemoryProxy,它是专门用来解析js变量的。你可以看到,我们直接把data作为参数传递进去了。
Ext.data.ArrayReader专门用来解析数组,并且告诉我们它会按照定义的规范进行解析,每行读取三个数据,第一个叫id,第二个叫 name,第三个descn。是不是有些眼熟,翻到前面cm定义的地方,哦,原来跟dataIndex是对应的。这样cm就知道哪列应该显示那条数据了。唉,你要是能看明白这一点,那你实在是太聪明了。
记得要执行一次ds.load(),对数据进行初始化。
有兄弟可能要问了,要是我第一列数据不是id而是name,第二列数据不是name而是id咋办?嗯,嗯,这个使用就用mapping来解决。改改变成这样:
var ds = new Ext.data.Store({
    proxy: new Ext.data.MemoryProxy(data),   //HttpProxy
    reader: new Ext.data.ArrayReader({}, [
        {name: 'id', mapping: 1},
        {name: 'name', mapping: 0},
        {name: 'descn', mapping: 2}
    ])
});
----------------------------------------------------------------------------------
复杂一点的JSONSTORE
var resourcestore = new Ext.data.JsonStore({
    root:'',
    id:'resourceid',
    remoteSort: false,
    pruneModifiedRecords:true,//设置为true,则每次当store装载或有record被移除时,清空所有修改了的record信息. 默认为false.
    fields: [          //两对键值对这是name
      'resourceid',
   {name:'contentno',mapping:'content.contentno'},   
    ],
    proxy: new Ext.data.HttpProxy({
     url: 'operation/resource/manageresource.jsp'//相对路径
    })
});
----------------------------------------------------------------------------------
load事件
store.on('load',function(store,records,o){        
Ext.Ajax.request({
  url : "operation/task/querytimedeveloperstatustasklist.jsp?developerid="+finishtask_store.baseParams.developerid+"&starttime="+finishtask_store.baseParams.starttime+"&endtime="+finishtask_store.baseParams.endtime,
   method : 'post',
   success : function(response, options) {
    var results = Ext.util.JSON.decode(response.responseText);
    alert(results.totalworkload);//取数据   { totalworkload : 2000}
    results.tasklist[0].taskid   // tasklist :[ {taskid: 1,.....},{taskid:2,.....}.....]  大概就是获取第一条数据的taskid的值。
   },
   failure : function() {     result = false;
   }
  });}
//从JSONSTORE中取数据方法:
store.reader.jsonData['totalworkload']     //马上测试之。。。恍然大悟。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值