• Ext 行模型与Grid视图


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>第十九章:Ext 表格组件</title>
        <link rel="stylesheet" href="src/ext/resources/css/ext-all.css">
    
        <!--ext-base 必须在ext-all之前引入-->
        <script src="src/ext/ext-base.js"></script>
        <script src="src/ext/ext-all.js"></script>
        <!--<script src="src/ext/ext-lang-zh_CN.js"></script>-->
        <style>
    
        </style>
    </head>
    <body>
    
    <div id="e">
    
    </div>
    
    <script>
        Ext.onReady(function () {
            // 列模型
    
            // 自定义序列号
            Ext.grid.RowNumberer.prototype = {
                header: '',
                 23,
                sortable: false,
                fixed: true,
                menuDisabled: true,
                dataIndex: '',
                id: 'numberer',
                rowspan: undefined,
                renderer: function (v, p, record, rowIndex) {
                    if (this.rowspan) {
                        p.cellAttr = 'rowspan=' + this.row.span;
                    }
                    return rowIndex + 1;
                },
            };
    
    
            // 创建一个Ext.grid.CheckboxSelectionModel对象
            var sm = new Ext.grid.CheckboxSelectionModel();
    
            // 显示序号
            var cm = new Ext.grid.ColumnModel([
                // 调用序列号函数
                new Ext.grid.RowNumberer(),
                sm,
                {
                    header: '姓名',
                     80,
                    dataIndex: 'Name',
                    tooltip: '这是您的姓名',
                },
                {
                    header: '性别',
                     40,
                    dataIndex: 'Sex',
                    align: 'center',
                    renderer: function (v) {
                        if (v === '男') {
                            return '<img src="src/ext/resources/images/default/dd/drop-yes.gif">';
                        } else {
                            return '<img src="src/ext/resources/images/default/dd/drop-no.gif">';
                        }
                    },
                },
                {
                    header: '生日',
                     150,
                    format: 'Y-m-d',
                    dataIndex: 'Birthday',
                    renderer: Ext.util.Format.dateRenderer('Y-m-d'),
                },
                {
                    header: '学历',
                     80,
                    dataIndex: 'Education',
                    align: 'center',
                },
                {
                    id: 'memo',
                    header: '备注',
                    dataIndex: 'Memo',
                },
                {
                    header: '操作',
                     150,
                    dataIndex: '',
                    menuDisabled: true,
                    renderer: function (v) {
    
                        return '<span style="margin-right: 10px"><a href="#">修改</span><span ><a href="#">删除</span>';
                    },
                },
            ]);
    
            var data = [
                {
                    name: '小李',
                    sex: '男',
                    birthday: Date.parseDate('1979-04-11', 'Y-m-d'),
                    edu: '本科',
                    memo: '无备注',
                }, {
                    name: '小陈',
                    sex: '男',
                    birthday: Date.parseDate('1979-04-11', 'Y-m-d'),
                    edu: '本科',
                    memo: '一个小帅哥',
                }, {
                    name: '小易',
                    sex: '女',
                    birthday: Date.parseDate('1979-04-11', 'Y-m-d'),
                    edu: '本科',
                    memo: '无备注',
                }, {
                    name: '小军',
                    sex: '男',
                    birthday: Date.parseDate('1980-12-11', 'Y-m-d'),
                    edu: '本科',
                    memo: '最帅老师',
                }];
    
            // Proxy
            var proxy = new Ext.data.MemoryProxy(data);
    
            // Record 定义记录结果
            var Human = Ext.data.Record.create([
                {
                    name: 'Name',
                    type: 'string',
                    mapping: 'name',
                },
                {
                    name: 'Sex',
                    type: 'string',
                    mapping: 'sex',
                },
                {
                    name: 'Birthday',
                    type: 'string',
                    mapping: 'birthday',
                },
                {
                    name: 'Education',
                    type: 'string',
                    mapping: 'edu',
                },
                {
                    name: 'Memo',
                    type: 'string',
                    mapping: 'memo',
                },
            ]);
    
            // Reader
            var reader = new Ext.data.JsonReader({}, Human);
    
            // Store
            var store = new Ext.data.Store({
                proxy: proxy,
                reader: reader,
            });
    
            // 立即加载
            store.load();
    
    
            var tbar = new Ext.Toolbar({
                buttons: [
                    {
                        text: '添加到首行',
                        icon: 'src/ext/resources/images/default/dd/drop-add.gif',
                        handler: function () {
                            var view = grid.getView();
                            // 添加一个数据
                            var obj = {
                                Name: '新人物',
                                Sex: '女',
                                Birthday: Date.parseDate('1980-05-12', 'Y-m-d'),
                                Education: '本科',
                                Memo: '是新的',
                            };
    
                            var human = new Human(obj);
                            grid.getStore().insert(0, human); // 添加到行首,修改第一个参数可以添加到任何位置
                            view.refresh();
                        },
                    },
                    {
                        text: '添加到尾行',
                        icon: 'src/ext/resources/images/default/dd/drop-add.gif',
                        handler: function () {
                            var view = grid.getView();
                            // 添加一个数据
                            var obj = {
                                Name: '新人物',
                                Sex: '女',
                                Birthday: Date.parseDate('1980-05-12', 'Y-m-d'),
                                Education: '本科',
                                Memo: '是新的',
                            };
    
                            var human = new Human(obj);
                            grid.getStore().add(human); // 添加到行首,修改第一个参数可以添加到任何位置
                            view.refresh();
                        },
                    },
                    {
                        text: '删除选定行',
                        icon: 'src/ext/resources/images/default/dd/drop-no.gif',
                        cls: 'x-btn-text-icon',
                        handler: function () {
                            var rsm = grid.getSelectionModel();
                            var view = grid.getView();
                            var store = grid.getStore();
                            for (var i = view.getRows().length - 1; i >= 0; i--) {
                                if (rsm.isSelected(i)) {
                                    store.remove(store.getAt(i));
                                }
                            }
                            view.refresh()
                        },
                    },
                    {
                        text: '删除所有',
                        icon: 'src/ext/resources/images/default/dd/drop-no.gif',
                        cls: 'x-btn-text-icon',
                        handler: function () {
                            var rsm = grid.getSelectionModel();
                            var view = grid.getView();
                            var store = grid.getStore();
                            store.removeAll()
                            view.refresh()
                        },
                    }
                ]
            })
            var bbar = new Ext.Toolbar({
                buttons: [
                    {
                        text: '当前数据',
                        handler: function () {
                            var view = grid.getView();
                            var rsm = grid.getSelectionModel(); // 得到行选择模型
                            var r = '';
                            for (var i = 0; i < view.getRows().length; i++) {
                                if (rsm.isSelected(i)) {
                                    // 找到选中的行
                                    r += grid.getStore().getAt(i).get('Name') + '<br/>';
                                }
                            }
    
                            Ext.Msg.alert('选择', '您选择的数据有:<br>' + r);
                        },
                    },
                    {
                        text: '第一行',
                        handler: function () {
                            // 得到行选择模型 Ext.grid.CheckboxSelectionModel
                            var rsm = grid.getSelectionModel();
                            rsm.selectFirstRow();
                        },
                    },
                    {
                        text: '上一行',
                        handler: function () {
                            var rsm = grid.getSelectionModel(); // 得到行选择模型
                            // 判断是否有上一行
                            if (!rsm.hasPrevious()) {
                                Ext.Msg.alert('警告', '已到达第一行');
                            } else {
                                // 选择上一行
                                rsm.selectPrevious();
                            }
                        },
                    },
                    {
                        text: '下一行',
                        handler: function () {
                            var rsm = grid.getSelectionModel();
                            if (!rsm.hasNext()) {
                                Ext.Msg.alert('警告', '已到达最后一行');
                            } else {
                                rsm.selectNext();
                            }
                        },
                    },
                    {
                        text: '最后一行',
                        handler: function () {
                            var rsm = grid.getSelectionModel();
                            rsm.selectLastRow();
                        },
                    },
                    {
                        text: '全选',
                        handler: function () {
                            var rsm = grid.getSelectionModel();
                            rsm.selectAll();
                        },
                    },
                    {
                        text: '全不选',
                        handler: function () {
                            var rsm = grid.getSelectionModel();
                            console.log(grid.getView().getRows().length);
                            rsm.deselectRange(0, grid.getView().getRows().length - 1);
                        },
                    },
                    {
                        text: '反选',
                        handler: function () {
                            var rsm = grid.getSelectionModel();
                            for (var i = grid.getView().getRows().length - 1; i >= 0; i--) {
                                if (rsm.isSelected(i)) {
                                    rsm.deselectRow(i);
                                } else {
                                    rsm.selectRow(i, true); // 必须保留原来的,否则效果无法实现
                                }
                            }
                        },
                    }
                ],
            })
            var grid = new Ext.grid.GridPanel({
                title: '中国公民',
                height: 400,
                cm: cm,
                sm: sm,
                store: store,
                renderTo: Ext.getBody(),
                autoExpandColumn: 'memo',  // 自动伸展,占满剩余区域
                buttonAlign: 'center',
                buttons : bbar,
                tbar : tbar
            });
    
    
        });
    
    
    </script>
    
    </body>
    </html>
    

      

  • 相关阅读:
    X-Plosives (并查集)
    HDU1272小希的迷宫 (并查集)
    React 初学
    js 插件 issue
    js常用方法
    常用网址
    js 零零散散的总结。
    git 常用命令
    es6 babel编译
    屏幕适配
  • 原文地址:https://www.cnblogs.com/hpx2020/p/10790324.html
Copyright © 2020-2023  润新知