加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

浅谈:Ext.data.JsonStore

发布时间:2020-12-16 19:23:07 所属栏目:百科 来源:网络整理
导读:简单的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
简单的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),0)"> //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'] //马上测试之。。。恍然大悟。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读