extjs 4中TreePanel和GridPanel使用

本示例实现了以下功能:

1.用TreePanel展现部门列表

2 .点击部门,可以显示此部门下所有的员工

在extjs 4中GridPanel的分页对于旧版本有所变化,具体变化可以参加下面提供的代码。

Ext.define('MyDesktop.EmployeeWindow', {
    extend: 'Ext.ux.desktop.Module',
 
    id: 'employee-win',
 
    init: function () {
        this.launcher = {
            text: '员工管理',
            iconCls: 'icon-grid',
            handler: this.createWindow,
            scope: this
        };
    },
 
    createWindow: function () {
        var desktop = this.app.getDesktop();
        var win = desktop.getWindow('employee-win');
        var deptStore = Ext.create('Ext.data.TreeStore', {
            model: 'Department',
            proxy: {
                type: 'ajax',
                url: '/department/getall'
            }
        });
        var employeeStore = Ext.create('Ext.data.Store', {
            id: 'employeeStore',
            model: 'Employee',
            pageSize: 2,
            //autoLoad: {start: 0, limit: 2},
            proxy: {
                type: 'ajax',
                url: '/employee/getpagedbydepartmentid',
                reader: {
                    type: 'json',
                    root: 'Data',
                    totalProperty: 'Total'
                },
 
                extraParams: {
                    departmentId: 0
                }
 
            }
        });
        if (!win) {
            win = desktop.createWindow({
                id: 'employee-win',
                title: '员工信息',
                 740,
                height: 480,
                iconCls: 'icon-grid',
                layout: 'border',
                items: [{
                    region: 'west',
                    split: true,
                    margins: '2 0 5 5',
                     275,
                    minSize: 100,
                    maxSize: 500,
                    xtype: 'treepanel',
                    useArrows: true,
                    root: {
                        Name: '所有部门',
                        Id: 0,
                        expanded: true,
                        selected: true
                    },
                    rootVisible: true,
                    store: deptStore,
                    singleExpand: true,
                    columns: [{
                        xtype: 'treecolumn',
                        text: '名称',
                        flex: 2,
                        sortable: true,
                        dataIndex: 'Name'
                    }],
                    listeners: {
                        afterrender: function (tree) {
                            tree.getSelectionModel().select(0);
                        },
                        itemclick: function (tree, record) {
                            employeeStore.currentPage = 1;
                            employeeStore.load({
                                start: 0,
                                limit: 2,
 
                                params: {
                                    departmentId: record.data.Id
                                }
                            });
                        }
                    }
                },
                    {
                        region: 'center',
                        layout: 'card',
                        margins: '2 5 5 0',
                        border: false,
                        xtype: 'grid',
                        store: employeeStore,
                        columns: [{
                            text: 'Id',
                            dataIndex: 'Id'
                        }, {
                            text: '编号',
                            dataIndex: 'Number'
                        }, {
                            text: "姓名",
                            dataIndex: 'Name'
                        }, {
                            text: "部门",
                            dataIndex: 'Department',
                            renderer: function (value) {
                                return value.Name;
                            }
                        }, {
                            text: "性别",
                            dataIndex: 'Gender',
                            renderer: function (value) {
                                return value == 0 ? '女' : '男';
                            }
                        }
                        ],
                        bbar: Ext.create('Ext.PagingToolbar', {
                            store: employeeStore,
                            displayInfo: true,
                            displayMsg: '显示 员工 {0} - {1} / {2}',
                            emptyMsg: '没有员工信息'
                        })
                    }
                ],
                tbar: [{
                    text: '添加',
                    tooltip: '添加员工信息',
                    handler: function () {
                        var addWin;
                        if (!addWin) {
                            addWin = Ext.create('widget.window', {
                                title: '添加员工信息',
                                 400,
                                modal: true,
                                resizable: false,
                                items: [{
                                    xtype: 'form',
                                    frame: true,
                                    bodyPadding: '10 10 0',
                                    url: '/employee/create',
                                    defaults: {
                                        anchor: '100%',
                                        allowBlank: false,
                                        msgTarget: 'side',
                                        labelWidth: 50
                                    },
                                    defaultType: 'textfield',
                                    items: [{
                                        fieldLabel: '姓名',
                                        name: 'name'
                                    }, {
                                        fieldLabel: '性别',
                                        name: 'Gender',
                                        value: '0'
                                    }],
                                    buttons: [{
                                        text: '保存',
                                        formBind: true,
                                        handler: function () {
                                            var form = this.up('form').getForm();
                                            var tree = win.items.items[0];
                                            var selModel = tree.getSelectionModel();
                                            var selected = selModel.getSelection();
                                            var dept = null;
 
                                            if (selected.length > 0) {
                                                dept = selected[0].data;
                                            }
                                            if (form.isValid()) {
                                                form.submit({
                                                    params: {
                                                        Number: dept == null ? 0 : dept.Id
                                                    },
                                                    waitTitle: '添加员工信息',
                                                    waitMsg: '正在处理',
                                                    success: function (form, action) {
                                                        form.reset();
                                                        employeeStore.load();
                                                    },
                                                    failure: function (form, action) {
                                                        Ext.Msg.alert('添加员工信息''添加员工信息失败');
                                                    }
                                                });
 
                                            }
                                        }
                                    }, {
                                        text: '重置',
                                        handler: function () {
                                            this.up('form').getForm().reset();
                                        }
                                    }]
                                }]
                            });
                        }
 
                        addWin.show();
                    }
                }, '-', {
                    text: '修改',
                    tooltip: '修改员工信息',
                    iconCls: 'update',
                    handler: function () {
                        var grid = win.items.items[0];
                        var selModel = grid.getSelectionModel();
                        var selected = selModel.getSelection();
 
                        if (selected.length == 0) {
                            Ext.Msg.alert('修改''请选择员工');
                            return;
                        }
 
                        var employee = selected[0].data;
                        var updateWin;
 
                        if (!updateWin) {
                            updateWin = Ext.create('widget.window', {
                                title: '修改员工信息',
                                 400,
                                modal: true,
                                items: [{
                                    xtype: 'form',
                                    frame: true,
                                    bodyPadding: '10 10 0',
                                    url: '/employee/update',
                                    defaults: {
                                        anchor: '100%',
                                        allowBlank: false,
                                        msgTarget: 'side',
                                        labelWidth: 50
                                    },
                                    defaultType: 'textfield',
                                    items: [{
                                        xtype: 'hiddenfield',
                                        name: 'id',
                                        value: employee.Id
                                    }, {
                                        fieldLabel: '名称',
                                        name: 'name',
                                        value: employee.Name
                                    }, {
                                        xtype: 'textareafield',
                                        fieldLabel: '部门',
                                        name: 'number',
                                        value: employee.Number
                                    }, {
                                        fieldLabel: '性别',
                                        name: 'gender',
                                        value: employee.Gender
                                    }],
                                    buttons: [{
                                        text: '保存',
                                        formBind: true,
                                        handler: function () {
                                            var form = this.up('form').getForm();
 
                                            if (form.isValid()) {
                                                form.submit({
                                                    waitTitle: '修改员工信息',
                                                    waitMsg: '正在处理',
                                                    success: function (form, action) {
                                                        form.reset();
                                                        employeeStore.load();
                                                    },
                                                    failure: function (form, action) {
                                                        Ext.Msg.alert('更新员工信息''更新员工信息失败');
                                                    }
                                                });
 
                                            }
                                        }
                                    }, {
                                        text: '重置',
                                        handler: function () {
                                            this.up('form').getForm().reset();
                                        }
                                    }]
                                }]
                            });
                        }
 
                        updateWin.show();
                    }
                }]
            });
        }
        win.show();
 
        return win;
    }
});
原文地址:https://www.cnblogs.com/TerryLiang/p/2169406.html