Ext4.2学习之Store数据存储

<!DOCTYPE html>
<html>
<head>
    <title>Hello World</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <link type="text/css" rel="stylesheet" href="ext-4/resources/css/ext-all.css"/>
    <script type="text/javascript" src="ext-4/ext-all.js"></script>
    <script type="text/javascript" src="ext-4/locale/ext-lang-zh_CN.js"></script>
    <title>09.store</title>
    <script type="text/javascript">
        Ext.onReady(function () {
            Ext.define('PersonRecord', {
                extend: 'Ext.data.Model',
                fields: [
                    {name: 'name', type: 'string'},
                    {name: 'sex', type: 'int'}
                ]
            });

            var boy = new PersonRecord({
                name: 'boy', sex: 0
            });

            console.log("boy.data.name = " + boy.data.name);
            console.log("boy.data['name'] = " + boy.data['name']);
            console.log("boy.get('name') = " + boy.get('name'))

            boy.set('name', 'boy name');

            console.log("boy.getChanges().name = " + boy.getChanges().name);
            var copyBoy = boy.copy();
            console.log('copyBoy id : ' + copyBoy.id + ',boy id:' + boy.id);

            var data = [
                ['boy', 0],
                ['girl', 1]
            ];

            var store = new Ext.data.ArrayStore({
                data: data,
                fields: [
                    {name: 'name', type: 'string'},
                    {name: 'sex', type: 'int'}
                ]
            });
            store.sort('name', 'DESC');

            store.load();

            var grid = new Ext.grid.GridPanel({
                store: store,
                columns: [
                    {header: 'name', dataIndex: 'name'},
                    {header: 'sex', dataIndex: 'sex'}
                ],
                autoHeight: true,
                renderTo: 'grid'
            });

            console.log(store.sorters);

            // 从store中获取数据
            for (var i = 0; i < store.getCount(); i++) {
                var record = store.getAt(i);
                // 输出girl boy
                console.log("通过for遍历数据: " + record.get('name'))
            }

            // 获取返回数据
            var records = store.getRange(0, 1);
            for (var i = 0; i < records.length; i++) {
                var record = records[i];
                // 输出girl boy
                console.log("通过Range查找数据: " + record.get('name'))
            }

            // 通过find查找数据
            var index = store.find('name', 'g');
            console.log("通过find查找数据: " + store.getAt(index).get('name'));

            // 对于复杂的逻辑 可以通过findBy来实现 可以同时判断record中的多个字段 在函数中实现复杂逻辑
            index = store.findBy(function (record, id) {
                return record.get('name') == 'girl' && record.get('sex') == 1;
            });
            console.log("通过findBy查找数据: " + store.getAt(index).get('name'));

            // 向store中添加数据 每次都会添加到store的末尾
            store.add(new PersonRecord({
                name: 'other', sex: 0
            }));

            // 通过add添加每次都会添加到末尾 这样会打破排序 如果希望根据store原有的排序将数据插入到相应的位置 使用addSorted函数
            // 这样添加完数据之后 就会立即对store进行排序
            store.addSorted(new PersonRecord({
                name: 'addSorted', sex: 1
            }));

            // 遍历所有数据
            store.each(function (record) {
                console.log("通过each遍历数据: " + record.get('name'))
            });
        });
    </script>
</head>
<body>
<div id="toolbar"></div>
<div id="grid"></div>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lang20150928

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值