Extjs常用Reader(数据读取器)详解

/**
 * Extjs常用Reader(数据读取器)详解
 * 数据读取器作用是将数字、json等格式的原始数据转为extjs中所需的通用数据类型
 *
 * 1.ArrayReader
 *    作用是从二维数组里以此读取数据,然后生成对应的Record;
 *   因为从proxy中读取的数据需要进行解析,这些数据转换成Record数组后才能提供给Ext.data.Store使用。
 *
 *  默认情况按列顺序读取数组中的数据。不过可以用mapping指定record与原始数组对应的列号。
 *  ArrayReader的用法很简单,但缺点是不支持分页。
 * var data = [
 *    [‘id1’,’name1’,’descn1’],
 *   [‘id2’,’name2’,’descn2’]
 * ];
 * var reader = new Ext.data.ArrayReader({
 *    id:1
 * },[
 *   {name:’name’,mapping:1},
 *   {name:’descn’,mapping:2},
 *   {name:’id’,mapping:0}
 * ]);
 *
 * 上面的代码中,data的顺序和reader的顺序不一样,如果顺序一样就不需要用到mapping。
 *
 * 2.JsonReader
 *
 * json数据:
 * var data = {
 *   id:0,
 *   totalProperty:2,
 *   successProperty:true,
 *   root:[{id:’id1’,name:’name1’,descn:’descn1’},
 *                                                                                                                       {‘id:’id2’,name:’name2’,descn:’descn2’}
 *                                                                                                                     ]
 * };
 * 
 * JSON的最大优势就是支持分页.
 * totalProperty参数表示数据的总量。
 * successProperty参数是可选的,可以用它判断当前请求是否执行成功,进而判断是否进行数据加载。
 * 在不希望JsonReader处理响应数据时,可以把successProperty设置成false
 * 
 * JsonReader是如何和JSON数据对应的
 *   var reader = new Ext.data.JsonReader({
 *    successProperty:” successProperty”,
 *    totalProperty:” totalProperty”,
 *    root:”root”,
 *    id:”id”,
 * },[
 *    {name:’id’,mapping:’id’},
 * ]);
 *
 * 3. XmlReader:使用的XML格式的数据
 *
 * eg:
 * <?xml version="1.0" encoding="utf-8"?>
 <dataset>
  <id>1</id>
  <totalRecords>2</totalRecords>
  <success>true</success>
  <record>
   <id>1</id>
   <name>name1</name>
   <descn>descn1</descn>
  </record>
  <record>
   <id>2</id>
   <name>name2</name>
   <descn>descn2</descn>
  </record>
 </dataset>
 *这里一定要用dataset作为xml根元素
 *
 *使用xmlReader进行配置,读取xml数据
  var reader = new Ext.data.XmlReader({
    totalRecords:’ totalRecords’,
    success:’ success’,
    record:’ record’,
    id:’ id’
 },[‘id’,’name’,’descn’]);


 *totalRecords用来指定从’totalRecords’标签里获得后台数据总数;
 *record表示XML中放在record标签里的数据是我们需要显示的结果数据;
 *
 *因为XmlReader不能将JavaScript中的字符串自动解析成XML格式的数据,
 *所以需要利用其他方式。参考localXHR.js中构造XML的方式,有了下面的解决方案:
 *eg:
 *
  var data = "<?xml version="1.0" encoding="utf-8"?>" +
 "<dataset>" +
  "<id>1</id>"+
  "<totalRecords>2</totalRecords>"+
  "<success>true</success>"+
  "<record>"+
   "<id>1</id>"+
   "<name>name1</name>"+
   "<descn>descn1</descn>"+
  "</record>"+
  "<record>"+
   "<id>2</id>"+
   "<name>name2</name>"+
   "<descn>descn2</descn>"+
  "</record>"+
   "</dataset>";

 var xdoc;
 
 if(typeof(DOMParser)=='undefined'){
  xdoc = new ActiveXObject("Microsoft.XMLDOM");
  xdoc.async="false";
  xdoc.loadXML(data);
 }else{
     var domParser = new DOMParser();
     xdoc = domParser.parseFromString(data,'application/xml');
     domParser = null;
 }
 
 var proxy = new Ext.data.MemoryProxy(xdoc);
 
 var reader = new Ext.data.XmlReader({
  totalRecords:'totalRecords',
  success:'success',
  record:'record',
  id:"id"
 },['id','name','descn']);
 
 var ds = new Ext.data.Store({
  proxy:proxy,
  reader:reader
 *
 *
 */

Ext.onReady(function() {
  })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值