说明: 代码来源网络, 原代码某些地方在Ext2.2中有错.
ArrayReader, 注意new Ext.data.ArrayReader({}, ... );
<html>
<head>
<link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" />
<script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../../ext-all.js"></script>
<script type="text/javascript">
//数据源为数组的ArrayReader
function ArrayData()
{
var arr=[ [ 'Bill', 'Gardener',1],['Ben', 'Horticulturalist',2]];
var reader = new Ext.data.ArrayReader({},
[
{name: 'name', mapping: 0},//对应字符:Bill
{name: 'metier', mapping: 1},//对应字符:Gardener
{name: 'id',mapping:2}//对应数字:1,如果第一个元素定义,则可以省略
]
);
//生成元数据
var data=reader.readRecords(arr);
var str="";
for(var i=0;i<data.records.length;i++)
{
str = str.concat(
" totalRecords:"+data.totalRecords +
" ID:"+data.records[i].id +
" Data: .id="+data.records[i].data.id +
" Data: .name="+data.records[i].data.name +
" Data: .metier="+data.records[i].data.metier +
" json:"+data.records[i].json+" ");
}
alert(str);
}
</script>
</head>
<body>
<input id="Button1" onclick="ArrayData()" type="button" value="数组源数据" />
</body>
</html>
JsonReader
<html>
<head>
<link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" />
<script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../../ext-all.js"></script>
<script type="text/javascript">
function JsonData()
{
var json={ 'results': 2, //设定此对象的总个数,与rows数组长度一致,需要手动设定
'rows': [
{ id: 1, name: 'Bill', metier: 'Gardener' },
{ id: 2, name: 'Ben', metier: 'Horticulturalist' }
]
};
var reader=new Ext.data.JsonReader(
{
totalProperty: "results",//totalRecords属性由json.results得到(省略此参数也能得到总条数)
root: "rows", //构造元数据的数组由json.rows得到
id: "id" //id由json.id得到
},[
{name:'id',mapping:'id'},
{name: 'name', mapping: 'name'},
{name: 'metier'} //如果name与mapping同名,可以省略mapping
]
)
var data=reader.readRecords(json);
var str="";
for(var i=0;i<data.records.length;i++)
{
//标识列 保存的数组被转换为对象 Json数据
str = str.concat(
" totalRecords:"+data.totalRecords +//数据总条数
" ID:"+data.records[i].id +
" Data: .id="+data.records[i].data.id +
" Data: .name="+data.records[i].data.name +
" Data: .metier="+data.records[i].data.metier +
" json:"+data.records[i].json+" ");
}
alert(str);
}
</script>
</head>
<body>
<input id="Button1" onclick="JsonData()" type="button" value="Json源数据" />
</body>
</html>
XmlReader
<html>
<head>
<link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" />
<script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../../ext-all.js"></script>
<script type="text/javascript">
function XmlData()
{
var str=['<?xml version="1.0" encoding="utf-8" ?>',
"<dataset>",
"<results>2</results>",
"<row>",
"<id>1</id>",
"<name>Bill</name>",
"<occupation>Gardener</occupation>",
"</row>",
"<row>",
"<id>2</id>",
"<name>Ben</name>",
"<occupation>Horticulturalist</occupation>",
"</row>",
"</dataset>"].join("");
//生成xmldocument对象
var xmlDocument;
if(Ext.isIE){
xmlDocument = new ActiveXObject("Msxml2.FreeThreadedDOMDocument")
xmlDocument.async=false;
xmlDocument.resolveExternals = false;
xmlDocument.loadXML(str)
}
else{
xmlDocument = (new DOMParser()).parseFromString(str, "text/xml");
}
//然后开始和其它两个reader一样的用法,只是这儿换了一种写法,recordtype也可以是一个record对象
//record对象的属性映射
var record = Ext.data.Record.create([
{name: 'name', mapping: 'name'}, // "mapping" property not needed if it's the same as "name"
{name: 'metier',mapping:'occupation'}, // This field will use "occupation" as the mapping.
{name:'id'}
])
var reader = new Ext.data.XmlReader({
totalRecords: "results",
record: "row", //row是节点选择器
id: "id"
}, record);
var data=reader.readRecords(xmlDocument);
var outstr="";
for(var i=0;i<data.records.length;i++)
{
//标识列 保存的数组被转换为对象 Json数据
outstr = outstr.concat(
" totalRecords:"+data.totalRecords +//数据总条数
" ID:"+data.records[i].id +
" Data: .id="+data.records[i].data.id +
" Data: .name="+data.records[i].data.name +
" Data: .metier="+data.records[i].data.metier +
" json:"+data.records[i].json+" ");
}
alert(outstr);
}
</script>
</head>
<body>
<input id="Button1" onclick="XmlData()" type="button" value="Xml源数据" />
</body>
</html>
分享到:
相关推荐
当使用JS对象作为数据格式时,只需将JsonReader替换为ArrayReader,数据结构相应地从JSON对象数组变为JavaScript对象数组。 分页处理的关键在于正确配置数据存储(Store)的`baseParams`以及DWR方法的参数和返回值...
reader: new Ext.data.ArrayReader({}, [ { name: 'id' }, { name: 'name' }, { name: 'sex' }, { name: 'date', type: 'date', dateFormat: 'Y-m-d' }, { name: 'address' }, { name: 'tel' } ]) }); ``` ...
7.4 ArrayReader、JsonReader和XmlReader 199 7.4.1 JsonReader 200 7.4.2 ArrayReader 200 7.4.3 XmlReader 201 7.5 Store的加载数据 201 7.6 Store的数据操作 203 7.6.1 添加数据 203 7.6.2 删除数据 203 7.6.3 ...
31、Ext.data.DataReader类 ……………26 32、Ext.data.ArrayReader类 …………… 26 33、Ext.data.JsonReader类 …………… 26 34、Ext.data.XmlReader类 …………… 27 35、Ext.data.Store类 …………………… 28 ...
这部分讲解了数据连接(Connection/Ajax)、数据代理(DataProxy,如HttpProxy、MemoryProxy、ScriptTagProxy)、数据读取器(DataReader,如ArrayReader、JsonReader、XmlReader)以及数据存储(Store)的使用。...
reader: new Ext.data.JsonReader({}, PersonRecord), remoteSort: true }); ``` 在这个例子中,当`store`加载数据时,会自动将`sort`和`dir`参数发送到服务器端。 #### 六、从store中获取数据 从`Ext.data....
可以支持带total的array数组数据(ext自带的ArrayReader只支持array型数据)
25. **Ext.data.DataReader类**:解析服务器返回的数据,如ArrayReader、JsonReader、XmlReader。 26. **Ext.data.Store类**:数据存储容器,管理数据记录和数据加载。 27. **GroupingStore类**、**SimpleStore类*...
简单易行ArrayReader 8.4.2.2. 灵活轻便JsonReader 8.4.2.3. 久负盛名XmlReader 8.4.3. 相信你知道怎么做加法 8.5. 跟我用json,每天五分钟 8.5.1. Hello 老爸。 8.5.2. 老妈等等,孩子先上场。 8.5.3. 老妈来了,...
简单易行ArrayReader 8.4.2.2. 灵活轻便JsonReader 8.4.2.3. 久负盛名XmlReader 8.4.3. 相信你知道怎么做加法 8.5. 跟我用json,每天五分钟 8.5.1. Hello 老爸。 8.5.2. 老妈等等,孩子先上场。 8.5.3. 老妈来了,...
在这个例子中,`Store`配置了一个`ArrayReader`来解析数据,定义了字段名和类型。 然后,我们创建了一个`Viewport`布局,包含几个`Panel`控件,如`North`、`West`和`Panel1`。`Viewport`占据整个浏览器窗口,并根据...
reader: new Ext.data.ArrayReader({}, [ // 数据解析规则 { name: 'id', mapping: 0 }, { name: 'sex', mapping: 1 }, { name: 'name', mapping: 2 }, { name: 'descn', mapping: 3 } ]) }); // 加载数据 ds...
var movieReader = new Ext.data.ArrayReader({ id: 'id' }, ['title', 'bar']); ``` - `ArrayReader`用于解析数组格式的数据。 - 此处指定了数据中的`id`字段以及需要解析的`title`和`bar`字段。 #### 7. 数据...
EXT提供了如`XmlReader`、`JsonReader`和`ArrayReader`等不同的Reader,它们能解析不同格式的数据,并将解析结果转化为Record对象,Record是数据集中的单条记录,包含一系列定义好的DataField,每个DataField定义了...
13.6.2 Ext.data.ArrayReader 13.6.3 Ext.data.JsonReader 13.6.4 Ext.data.XmlReader 13.7 Ext.ux.DWR 13.7.1 Ext.data.DwrProxy 13.7.2 Ext.data.DWRTreeLoader 13.7.4 Web服务端配置 13.7.5 服务层接口 ...
reader: new Ext.data.ArrayReader({}, [ {name: 'id', mapping: 0}, {name: 'sex', mapping: 1}, {name: 'name', mapping: 2}, {name: 'descn', mapping: 3} ]) }); ds.load(); ``` 这里的MemoryProxy是内存...
31、Ext.data.DataReader类 ……………26 32、Ext.data.ArrayReader类 …………… 26 33、Ext.data.JsonReader类 …………… 26 34、Ext.data.XmlReader类 …………… 27 35、Ext.data.Store类 …………………… 28 ...
**DataReader, ArrayReader, JsonReader, XmlReader 类**:数据读取器,用于解析不同格式的服务器响应数据。 29-34. **Store, GroupingStore, SimpleStore, Tree, Node 类**:数据存储类,管理数据集,支持分组、...