ExtJS--Extjs中创建或得到record和store的几种方法代码

  1. Ext.data.Store Ext.data.Record XmlReader SimpleStore   
  2.   
  3.   
  4. 1) // create 最基本建立Record和Store的方法   
  5. var myStore = new Ext.data.Store();   
  6. var TopicRecord = Ext.data.Record.create([   
  7.         {name: 'title', mapping: 'topic_title'},   
  8.         {name: 'author', mapping: 'username'},   
  9.         {name: 'totalPosts', mapping: 'topic_replies', type: 'int'},   
  10.         {name: 'lastPost', mapping: 'post_time', type: 'date'},   
  11.         {name: 'lastPoster', mapping: 'user2'},   
  12.         {name: 'excerpt', mapping: 'post_text'}   
  13. ]); // 列表影射,columnModel   
  14. var myNewRecord = new TopicRecord({   
  15.         title: 'Do my job please',   
  16.         author: 'noobie',   
  17.         totalPosts: 1,   
  18.         lastPost: new Date(),   
  19.         lastPoster: 'Animal',   
  20.         excerpt: 'No way dude!'  
  21. }); // 实际的一条记录   
  22. myStore.add(myNewRecord);   
  23.   
  24. 2) // 这种方法也可以构建一个store   
  25. var store = new Ext.data.SimpleStore({   
  26.         fields: ['abbr''state''nick'], // 一定要有这个,如果放在grid中,与column的dataIndex属性值对应   
  27.         data : [   
  28.         ['AL''Alabama''The Heart of Dixie'],   
  29.         ['AK''Alaska''The Land of the Midnight Sun'],   
  30.         ['IN''Indiana''The Hospitality State']   
  31.         ]   
  32. });   
  33.   
  34. 3) 还有一个种方法,用ArrayReader,数据源是js二维数组,用SimpleStore   
  35. var store = new Ext.data.SimpleStore({   
  36.         /*   
  37.         数据源:[ [1'AL''0.1''The Heart of Dixie''6', new Date()] ]   
  38.         ArrayReader中, ajax会返回一个数据源给ArrayReader,   
  39.                 fields数组与数据源的序列的顺序要相同   
  40.         */   
  41.         fields: ['pid''company''price''change''pctChange''lastChange'],   
  42.         url: 't2.php',   
  43.         reader: new Ext.data.ArrayReader(   
  44.                 {id: 0},   
  45.                 /*   
  46.                 id 的取值应为下面的mapping的值,如果在下面没有出现,则取数据源的0序列   
  47.                 ,recordid可通过store.getById(recordid) 取得相应的 Record   
  48.                 当有 id 这个属性设置的时候,如果id值为2,就表示用price作recordid   
  49.                 , 如果 name 的值与数据源的序列的名称相同,就可以不指定mapping   
  50.                 */   
  51.                 [{name:'company',mapping: 1}, {name:'price',mapping: 2}, {name:'change',mapping: 3}, {name:'pctChange',mapping: 4}, {name:'lastChange',mapping: 5}]   
  52.                 )   
  53. });   
  54. // 因为使用url会触发ajax, 是异步方式,如果是要ajax读取数据后马上触发事件,   
  55. // 必须添加load事件的监听   
  56. store.addListener('load', function(st, rds, opts) {   
  57.         // st 是当前的store, rds是读到的Record[], opts是store的配置   
  58.         //alert(rds.getTotalCount());   
  59.         nextstore.removeAll(); //先清除另一个store的内容   
  60.         nextstore.add(rds); // 给另一个store添加这些records   
  61.         //for( var c=0; c<rds.length; c++ ) store.addSorted(rds[c]);   
  62. });   
  63. store.load();   
  64.   
  65. 4) 还有一个种方法,用XmlReader,数据源是xml, 只能用Ext.data.Store,不能用SimpleStore   
  66. 就因为SimpleStore,害我搞了n久才发现只能用Store   
  67. 先看数据源:   
  68. <?xml?>   
  69. <dataset>   
  70.  <results>2</results>   
  71.  <row>   
  72.    <id>1</id>   
  73.    <name>Bill</name>   
  74.    <occupation>Gardener</occupation>   
  75.  </row>   
  76.  <row>   
  77.    <id>2</id>   
  78.    <name>Ben</name>   
  79.    <occupation>Horticulturalist</occupation>   
  80.  </row>   
  81. </dataset>   
  82. js:   
  83. var store = new Ext.data.Store({   
  84.         fields: ['id''name''occupation'],   
  85.         url: 't2.php',   
  86.         reader: new Ext.data.XmlReader(   
  87.                 {   
  88.                 record: "row", // xml中每行数据的内容   
  89.                 totalRecords: "results", // xml中的results节点,表时记录数 (option)   
  90.                 id: 'id'  
  91.                 // 每行数据的素引,xml中是row标签的子节点, 作recordid, (option),    
  92.                 // 如果id列在数据源中的值有重复,就只会显前面的列,后面的放弃.   
  93.                 },   
  94.                 /*   
  95.                 id 的取值应为下面的mapping的值,如果在下面没有出现,则取数据源的0序列   
  96.                 当有 id 这个属性设置的时候,如果id值为2,就表示用price作recordid   
  97.                 下面的mapping,是定义的素引与xml中的节点对应   
  98.                 , 如果 name 的值与数据源的序列的名称相同,就可以不指定mapping   
  99.                 */   
  100.                 [{name:'name',mapping: 'name'}, {name:'occupation'} ]   
  101.                 // 这里也可写成 ['id''name''occupation']   
  102.         )   
  103. });   
  104. // 因为使用url会触发ajax, 是异步方式,如果是要ajax读取数据后马上触发事件,   
  105. // 必须添加load事件的监听   
  106. store.addListener('load', function(st, rds, opts) {   
  107.         // st 是当前的store, rds是读到的Record[], opts是store的配置   
  108.         //alert(rds.getTotalCount());   
  109.         nextstore.removeAll(); //先清除另一个store的内容   
  110.         nextstore.add(rds); // 给另一个store添加这些records   
  111.         //for( var c=0; c<rds.length; c++ ) store.addSorted(rds[c]);   
  112. });   
  113. store.load();   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值