`
诸葛蛋疼
  • 浏览: 36795 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ext.data.Store Ext.data.Record XmlReader SimpleStore

阅读更多
1) // create 最基本建立Record和Store的方法
var myStore = new Ext.data.Store();
var TopicRecord = Ext.data.Record.create([
        {name: 'title', mapping: 'topic_title'},
        {name: 'author', mapping: 'username'},
        {name: 'totalPosts', mapping: 'topic_replies', type: 'int'},
        {name: 'lastPost', mapping: 'post_time', type: 'date'},
        {name: 'lastPoster', mapping: 'user2'},
        {name: 'excerpt', mapping: 'post_text'}
]); // 列表影射,columnModel
var myNewRecord = new TopicRecord({
        title: 'Do my job please',
        author: 'noobie',
        totalPosts: 1,
        lastPost: new Date(),
        lastPoster: 'Animal',
        excerpt: 'No way dude!'
}); // 实际的一条记录
myStore.add(myNewRecord);

2) // 这种方法也可以构建一个store
var store = new Ext.data.SimpleStore({
        fields: ['abbr', 'state', 'nick'], // 一定要有这个,如果放在grid中,与column的dataIndex属性值对应
        data : [
        ['AL', 'Alabama', 'The Heart of Dixie'],
        ['AK', 'Alaska', 'The Land of the Midnight Sun'],
        ['IN', 'Indiana', 'The Hospitality State']
        ]
});

3) 还有一个种方法,用ArrayReader,数据源是js二维数组,用SimpleStore
var store = new Ext.data.SimpleStore({
        /*
        数据源:[ [1, 'AL', '0.1', 'The Heart of Dixie', '6', new Date()] ]
        ArrayReader中, ajax会返回一个数据源给ArrayReader,
                fields数组与数据源的序列的顺序要相同
        */
        fields: ['pid', 'company', 'price', 'change', 'pctChange', 'lastChange'],
        url: 't2.php',
        reader: new Ext.data.ArrayReader(
                {id: 0},
                /*
                id 的取值应为下面的mapping的值,如果在下面没有出现,则取数据源的0序列
                ,recordid可通过store.getById(recordid) 取得相应的 Record
                当有 id 这个属性设置的时候,如果id值为2,就表示用price作recordid
                , 如果 name 的值与数据源的序列的名称相同,就可以不指定mapping
                */
                [{name:'company',mapping: 1}, {name:'price',mapping: 2}, {name:'change',mapping: 3}, {name:'pctChange',mapping: 4}, {name:'lastChange',mapping: 5}]
                )
});
// 因为使用url会触发ajax, 是异步方式,如果是要ajax读取数据后马上触发事件,
// 必须添加load事件的监听
store.addListener('load', function(st, rds, opts) {
        // st 是当前的store, rds是读到的Record[], opts是store的配置
        //alert(rds.getTotalCount());
        nextstore.removeAll(); //先清除另一个store的内容
        nextstore.add(rds); // 给另一个store添加这些records
        //for( var c=0; c<rds.length; c++ ) store.addSorted(rds[c]);
});
store.load();

4) 还有一个种方法,用XmlReader,数据源是xml, 只能用Ext.data.Store,不能用SimpleStore
就因为SimpleStore,害我搞了n久才发现只能用Store
先看数据源:
<?xml?>
<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>
js:
var store = new Ext.data.Store({
        fields: ['id', 'name', 'occupation'],
        url: 't2.php',
        reader: new Ext.data.XmlReader(
                {
                record: "row", // xml中每行数据的内容
                totalRecords: "results", // xml中的results节点,表时记录数 (option)
                id: 'id'
                // 每行数据的素引,xml中是row标签的子节点, 作recordid, (option),
                // 如果id列在数据源中的值有重复,就只会显前面的列,后面的放弃.
                },
                /*
                id 的取值应为下面的mapping的值,如果在下面没有出现,则取数据源的0序列
                当有 id 这个属性设置的时候,如果id值为2,就表示用price作recordid
                下面的mapping,是定义的素引与xml中的节点对应
                , 如果 name 的值与数据源的序列的名称相同,就可以不指定mapping
                */
                [{name:'name',mapping: 'name'}, {name:'occupation'} ]
                // 这里也可写成 ['id', 'name', 'occupation']
        )
});
// 因为使用url会触发ajax, 是异步方式,如果是要ajax读取数据后马上触发事件,
// 必须添加load事件的监听
store.addListener('load', function(st, rds, opts) {
        // st 是当前的store, rds是读到的Record[], opts是store的配置
        //alert(rds.getTotalCount());
        nextstore.removeAll(); //先清除另一个store的内容
        nextstore.add(rds); // 给另一个store添加这些records
        //for( var c=0; c<rds.length; c++ ) store.addSorted(rds[c]);
});
store.load();

分享到:
评论

相关推荐

    EXT核心API详解

    35、Ext.data.Store类 …………………… 28 36、Ext.data.GroupingStore类 ………… 32 37、Ext.data.SimpleStore类 ………… 34 38、Ext.data.Tree类 …………………… 34 39、Ext.data.Node类 ………………… 34 ...

    extjs帮助文档

    - `Ext.data.Store.remove(record)`:移除记录。 #### 三十六、Ext.data.GroupingStore类(第32页) - **概述**:Ext.data.GroupingStore类实现了分组数据存储。 - **常用方法**: - `new Ext.data.GroupingStore...

    ExtJS入门教程(超级详细)

    35、Ext.data.Store类 …………………… 28 36、Ext.data.GroupingStore类 ………… 32 37、Ext.data.SimpleStore类 ………… 34 38、Ext.data.Tree类 …………………… 34 39、Ext.data.Node类 ………………… 34 ...

    EXT核心API详解.doc

    29. **Ext.data.ArrayReader类**、**JsonReader类**和**XmlReader类**:不同数据格式(数组、JSON、XML)的特定数据读取器。 30. **Ext.data.Store类**:数据存储,管理数据集,与DataProxy和DataReader交互。 31....

    extjs帮助文档pdf版

    - `Ext.data.SimpleStore.add(record)`: 添加数据记录。 #### 38. Ext.data.Tree 类 (P.34) - **概述**:用于管理树形结构的数据。 - **常用方法**: - `Ext.data.Tree.load(root, callback, scope)`: 加载树数据...

    精通JS脚本之ExtJS框架.part1.rar

    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 服务层接口 第14章 ExtJS扩展 14.1 利用Ext.extend实现继承 14.2 与...

    精通JS脚本之ExtJS框架.part2.rar

    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 服务层接口 第14章 ExtJS扩展 14.1 利用Ext.extend实现继承 14.2 与...

    Ext深入浅出 数据传输

    10.3 Ext.data.Record .............................232 10.4 Ext.data.Store ...............................233 10.4.1 基本应用...................................233 10.4.2 对数据进行排序...................

    ext 读取xml 可编辑grid

    var store = new Ext.data.Store({ reader: reader }); // 创建EditorGridPanel var grid = new Ext.grid.EditorGridPanel({ store: store, cm: new Ext.grid.ColumnModel([ {header: 'Field 1', dataIndex: '...

    Ext+JS高级程序设计.rar

    7.3 Ext.data.Record 198 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 ...

    解析Xml构建Ext树形菜单

    1. **解析XML**:EXT提供了一个名为`Ext.data.XmlReader`的类,用于从XML文档中读取数据。你需要定义reader的配置,包括XML的根节点和数据节点的标识符。例如,如果XML的根节点是`menu`,节点是`item`,配置可能如下...

    extjs学习资源

    - **记录模型**: `Ext.data.Record`定义了数据模型的结构。 - **数据代理**: `DataProxy`、`HttpProxy`、`MemoryProxy`和`ScriptTagProxy`用于从不同来源加载数据。 - **数据读取器**: `DataReader`、`...

    ext js解析xml文档

    Extjs解析xml问题 ... var store=new Ext.data.Store({   url:'GridData.xml',  reader:new Ext.data.XmlReader(  {record:'Item'},   ["ASIN","Author","Manufacturer","ProductGroup","Title"])  });

    EXTJS___API详解

    **XTemplate 和 Ext.data.Connection 类**:XTemplate用于渲染数据到HTML,Connection类处理Ajax请求,与服务器交互。 23-25. **Ext.Ajax, DataProxy, HttpProxy, MemoryProxy, ScriptTagProxy 类**:这些类涉及...

    ext读取两种结构的xml的代码

    在Ext JS中,XML数据的读取通常通过`Ext.data.XmlReader`类来实现,它是一个数据读取器,能够将XML数据转换为JavaScript对象,这些对象可以被Ext的数据存储(如`Ext.data.Store`)进一步处理和显示。在本文中,我们...

    基于extjs的.NET3.5控件Coolite 1.0.0.34580(Preview预览版)

    1. Renamed Coolite.Ext.Web project to Ext.Net 2. Renamed Coolite.Examples project to Ext.Net.Examples 3. Renamed Coolite.Ext.UX project to Ext.Net.UX 4. Renamed Coolite.EmbeddedResourceBuilder ...

    ExtJS增删改查

    reader: new Ext.data.XmlReader({ record: 'item' }, Record) }); ds.load(); grid.reconfigure(ds, cm); } ``` 2. **添加**: - 可以通过创建新的记录并将其插入到指定位置来实现添加操作: ```...

    extjs tree 节点 链接 新窗口

    var store = new Ext.data.JsonStore({ url: 'link.ejf', totalProperty: 'results', root: 'rows', idProperty: 'id', fields: ['title', 'username', {name: 'loginTimes', type: 'int'}, {name: '...

Global site tag (gtag.js) - Google Analytics