`
yiminghe
  • 浏览: 1466433 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Extjs CRUD 模板

阅读更多

也算是一个总结吧,备忘,总结了一个增删改查的例子,以后要达到的目标是每个模块一个 js,每个js都把当前模块的相关操作完成,例如增删改差等。

 

 

//重要指定本机的ext空白图片
Ext.BLANK_IMAGE_URL = '../js/ext/s.gif';
/**
 以下为工具函数 -- start
 **/

function transferMap(m, no) {
    var v = new Array();
    if (no) v.push(['不限', '']);
    for (var p in m) {
        v.push([m[p], p]);
    }
    return v;
}
function getSubJobC(key, map) {
    for (var i = 0; i < map.length; i++) {
        if (map[i].key == key) return map[i].children;
    }
    return [];
}
function sure(str, l) {
    if (!str) str = '1';
    str = str + '';
    var len = str.length;
    for (var i = 0; i < l - len; i++)
    str = '0' + str;
    return str;
}
function getSimpleCombo(config) {
    var config_data = transferMap(config.dataMap, config.unlimit);
    var template = {
        value: config_data[0][1],
        allowBlank: config.allowBlank,
        store: new Ext.data.SimpleStore({
            fields: ['text', 'value'],
            data: config_data
        }),
        displayField: 'text',
        typeAhead: true,
        valueField: 'value',
        fieldLabel: config.fieldLabel,
        mode: 'local',
        name: config.name + '_',
        hiddenName: config.name,
        xtype: 'combo',
        triggerAction: 'all',
        //emptyText:'选择',
        selectOnFocus: true,
        forceSelection: true
    };
    return template;
}
function toArray(ma, v) {
    if (!v) v = new Array();
    for (var i = 0; i < ma.length; i++) {
        v.push([ma[i].label, ma[i].label]);
        if (ma[i].children) toArray(ma[i].children, v);
    }
    return v;
}
/**
 以下为工具函数 -- end
 **/
/**
 建立四棵选择树,以及选择树窗口
 **/

function createSingleSelectWin() {
    var singleSelectWin = {};
    var singleLocation = new yiminghe.checkedTreeSingle({
        width: 250,
        height: 400,
        dataArray: theRegions,
        title: '地区大类',
        expandable: true,
        singleClickExpand: false,
        singleExpand: true,
        clickFunc: function (n) {
            singleLocation2.setDataArray(getSubJobC(n.attributes.id, theRegions), true);
        },
        level: 0,
        allowEmpty: false
    });
    var singleLocation2 = new yiminghe.checkedTreeSingle({
        width: 250,
        height: 400,
        dataArray: [],
        title: '具体地区',
        expandable: false,
        singleClickExpand: true,
        singleExpand: true,
        level: 99,
        allowEmpty: false
    });
    var singleJobSelector = new yiminghe.checkedTreeSingle({
        width: 250,
        height: 400,
        dataArray: theJobCategories,
        title: '职业类别',
        expandable: true,
        singleClickExpand: false,
        singleExpand: true,
        clickFunc: function (n) {
            singleJobSelector2.setDataArray(getSubJobC(n.attributes.id, theJobCategories), true);
        },
        level: 0,
        allowEmpty: false
    });
    var singleJobSelector2 = new yiminghe.checkedTreeSingle({
        width: 250,
        height: 400,
        dataArray: [],
        title: '具体职业',
        expandable: false,
        singleClickExpand: true,
        singleExpand: true,
        level: 99,
        allowEmpty: false
    });
    var singleSelectorWindow = new Ext.Window({
        renderTo: document.body,
        width: 520,
        layout: 'column',
        height: 470,
        closeAction: 'hide',
        title: '单击选择项目',
        modal: true,
        items: [{
            columnWidth: .5,
            layout: 'fit',
            height: 400,
            items: [singleJobSelector.getExtTree(), singleLocation.getExtTree()]
        },
        {
            columnWidth: .5,
            height: 400,
            layout: 'fit',
            items: [singleJobSelector2.getExtTree(), singleLocation2.getExtTree()]
        }],
        buttons: [{
            text: '确认选定',
            handler: function () {
                var c;
                var tree = singleLocation;
                var tree2 = singleLocation2;
                if (singleLocation.getExtTree().isVisible()) {
                    tree = singleLocation;
                    tree2 = singleLocation2;
                    c = singleLocation.extField;
                } else if (singleJobSelector.getExtTree().isVisible()) {
                    tree = singleJobSelector;
                    tree2 = singleJobSelector2;
                    c = singleJobSelector.extField;
                }
                var n = tree2.getSelectionNode();
                if (!n) {
                    n = tree.getSelectionNode();
                }
                if (n) {
                    if (n.attributes.id == -9999) {
                        alert('请选择');
                        return;
                    }
                } else {
                    alert('请选择');
                    return;
                }
                //alert(n.attributes.text);
                if (n.attributes.id == 'he_empty') c.setValue('');
                else c.setValue(n.attributes.id);
                c.setRawValue(n.attributes.text);
                singleSelectorWindow.hide();
            }
        }]
    });
    singleSelectWin = {
        win: singleSelectorWindow,
        jobs: [singleJobSelector, singleJobSelector2],
        locations: [singleLocation, singleLocation2]
    };
    return singleSelectWin;
}
/**
 建立 添加修改窗口
 **/

function createInputWindow() {
    var singleSelectWin = createSingleSelectWin();
    /**
     一些form 字段 对象
     **/
    var triggerWorkAddress = new Ext.form.ComboBox({
        allowBlank: false,
        name: 'workAddress_',
        fieldLabel: '<span style="color:red">*</span> 工作地点',
        emptyText: '按下拉箭头选择',
        editable: false,
        hiddenName: 'workAddress',
        store: []
    });
    triggerWorkAddress.onTriggerClick = function () {
        for (var i = singleSelectWin.jobs.length - 1; i >= 0; i--) singleSelectWin.jobs[i].hide();
        for (var i = singleSelectWin.locations.length - 1; i >= 0; i--) singleSelectWin.locations[i].show();
        singleSelectWin.win.show();
        singleSelectWin.win.toFront();
    };
    singleSelectWin.locations[0].extField = triggerWorkAddress;
    var triggerJob = new Ext.form.ComboBox({
        //allowBlank:false,
        name: 'jobTitle_',
        fieldLabel: '<span style="color:red">*</span> 选择职位',
        emptyText: '按下拉箭头选择',
        triggerAction: 'all',
        selectOnFocus: true,
        editable: false,
        hiddenName: 'jobTitle',
        store: []
    });
    triggerJob.onTriggerClick = function () {
        for (var i = singleSelectWin.jobs.length - 1; i >= 0; i--) singleSelectWin.jobs[i].show();
        for (var i = singleSelectWin.locations.length - 1; i >= 0; i--) singleSelectWin.locations[i].hide();
        singleSelectWin.win.show();
        singleSelectWin.win.toFront();
    };
    singleSelectWin.jobs[0].extField = triggerJob;
    var jobTitleExt = new Ext.form.ComboBox({
        xtype: 'combo',
        store: new Ext.data.SimpleStore({
            fields: ['text', 'value'],
            data: toArray(theJobCategories)
        }),
        displayField: 'text',
        typeAhead: true,
        valueField: 'value',
        mode: 'local',
        name: 'jobTitleEx',
        triggerAction: 'all',
        emptyText: '可直接输入职位名称',
        selectOnFocus: true,
        fieldLabel: '或 职位关键字',
        listeners: {
            'blur': function (f) {
                if (f.getRawValue().trim() != '') {
                    triggerJob.setValue('');
                    triggerJob.setRawValue('');
                }
            }
        }
    });
    /**
     添加修改的form
     **/
    var inputForm = new Ext.FormPanel({
        //width:720,
        //height:800,
        frame: true,
        //renderTo:document.body,
        bodyBorder: false,
        border: false,
        method: 'POST',
        defaults: {
            anchor: '97%'
            //不能加 xtype ,column layout do not work
        },
        //form 中的按钮
        buttons: [{
            text: '确定',
            //点击按钮所触发的动作
            handler: function () {
                if (inputForm.form.isValid()) {
                    //ajax form submit
                    inputForm.form.submit({
                        url: 'company_setjob_action.jsp',
                        success: function (form, action) {
                            if (!action.result.success) {
                                Ext.Msg.alert('失败', action.result.data.info);
                                return;
                            }
                            Ext.Msg.alert('注意', '亲爱的用户,您好!您的职位已发布成功,我们将在24小时内进行审核,审核前您可修改职位信息。');
                            inputWindow.hide();
                            inputForm.underGrid.reload();
                        },
                        waitMsg: '正在保存信息',
                        waitTitle: '稍后...',
                        failure: function (form, action) {
                            Ext.Msg.alert('失败', action.result.data.info);
                        }
                    });
                } else {
                    // Ext.Msg.alert('信息', '请填写完成再提交!');
                }
            }
        }],
        //form 中的字段对象
        items: [
        //字段1 start
        {
            xtype: 'hidden',
            name: 'jobId'
        },
        //字段1 end
        //字段集合开始1 
        {
            xtype: 'fieldset',
            autoHeight: true,
            layout: 'column',
            title: '描述这个职位',
            bodyStyle: 'padding:15px 15px 0',
            //frame:true,
            items: [{
                columnWidth: .5,
                layout: 'form',
                items: [triggerJob, getSimpleCombo({
                    dataMap: theJobTypeMap,
                    fieldLabel: '<span style="color:red">*</span> 职位性质',
                    name: 'jobType',
                    allowBlank: false
                }), {
                    xtype: 'textfield',
                    name: 'validDays',
                    allowBlank: false,
                    fieldLabel: '<span style="color:red">*</span> 职位有效期(天)'
                },
                {
                    xtype: 'numberfield',
                    name: 'desiredSalary',
                    fieldLabel: '薪资待遇(元)'
                },
                {
                    xtype: 'textfield',
                    name: 'deptName',
                    fieldLabel: '所属部门'
                }]
            },
            {
                columnWidth: .5,
                layout: 'form',
                items: [jobTitleExt, triggerWorkAddress, {
                    allowBlank: false,
                    xtype: 'numberfield',
                    name: 'desiredCount',
                    fieldLabel: '<span style="color:red">*</span> 招聘人数'
                },
                getSimpleCombo({
                    dataMap: theSalaryTypeMap,
                    fieldLabel: '薪资类型',
                    name: 'desiredSalaryType',
                    allowBlank: false
                }), {
                    xtype: 'textarea',
                    allowBlank: false,
                    name: 'jobDesc',
                    fieldLabel: '<span style="color:red">*</span> 职位描述',
                    width: 200
                }]
            }]
        },
        //字段集合结束1
        {
            xtype: 'fieldset',
            autoHeight: true,
            layout: 'column',
            title: '对应聘者要求',
            bodyStyle: 'padding:15px 15px 0',
            //frame:true,
            items: [{
                columnWidth: .5,
                layout: 'form',
                items: [{
                    xtype: 'numberfield',
                    name: 'requiredExperience',
                    fieldLabel: '工作年限(年)'
                },
                {
                    xtype: 'numberfield',
                    name: 'requiredMaxAge',
                    minValue: 15,
                    maxValue: 60,
                    value: 60,
                    allowBlank: false,
                    fieldLabel: '<span style="color:red">*</span> 年龄上限(岁)'
                }]
            },
            {
                columnWidth: .5,
                layout: 'form',
                items: [getSimpleCombo({
                    dataMap: theDegreeMap,
                    fieldLabel: '<span style="color:red">*</span> 学历',
                    name: 'requiredDegree',
                    allowBlank: false
                }), {
                    xtype: 'numberfield',
                    name: 'requiredMinAge',
                    minValue: 15,
                    maxValue: 60,
                    value: 15,
                    allowBlank: false,
                    fieldLabel: '<span style="color:red">*</span> 年龄下限(岁)'
                }]
            }]
        }]
    });
    //将添加修改form加入到添加修改窗口
    var inputWindow = new Ext.Window({
        frame: true,
        width: 760,
        height: 480,
        autoScroll: true,
        title: '详情窗口',
        closeAction: 'hide',
        //maximizable:true,
        //modal: true ,
        renderTo: document.body,
        items: [inputForm]
    });
    return {
        win: inputWindow,
        form: inputForm
    };
    //inputWindow.show();
}
Ext.onReady(
//主函数 ,页面载入后运行


function () {
    Ext.QuickTips.init();
    //建立添加修改窗口
    var inputWin = createInputWindow();
    //列的元数据
    var columnMetaData = [
    /*
                 一个元数据开始
                 */
    {
        //json id
        dataIndex: 'jobId',
        //表头
        header: '职位',
        //是否排序
        sortable: true,
        //显示宽度
        width: 100
    }
    /*
                 一个元数据结束
                 */
    , {
        dataIndex: 'jobTitle',
        header: '职位名称',
        width: 150,
        //是否在表格中显示
        show: true,
        sortable: true,
        renderer: function (val) {
            return '<span style="color: red;">' + getLabel(theJobCategories, val) + '</span>';
        }
    },
    {
        dataIndex: 'appliedCount',
        header: '接收简历数量',
        width: 90,
        sortable: true,
        show: true
    },
    {
        dataIndex: 'repliedCount',
        header: '已回复简历数量',
        sortable: true,
        width: 100
    },
    {
        dataIndex: 'viewedCount',
        header: '招聘者查看次数',
        width: 90,
        sortable: true,
        show: true
    },
    {
        dataIndex: 'sendCount',
        header: '短信发送数量',
        sortable: true,
        width: 90,
        show: true
    },
    {
        dataIndex: 'issueTime.time',
        header: '发布时间',
        sortable: true,
        width: 150,
        show: true,
        renderer: function (val) {
            var t = new Date();
            t.setTime(val)
            return '<span style="color: green;">' + t.toLocaleString() + '</span>';
        }
    },
    {
        dataIndex: 'jobStatus',
        sortable: true,
        header: '职位状态',
        width: 70,
        show: true,
        renderer: function (val) {
            return theJobStatusMap[val];
        }
    }];
    //表格工具栏
    var toolBar = [
    /*
                 一个工具栏元素开始
                 */
    {
        //工具栏名称
        text: '修改',
        //工具栏图标
        iconCls: 'bmenu',
        //处理函数
        handler: function () {
            //得到选中数据
            var record = this.getSelectionRecord();
            if (!record) {
                Ext.MessageBox.alert('注意', '请选择表格数据');
                return;
            }
            //添加修改窗口显示
            inputWin.win.show();
            //ajax 装载原来数据
            inputWin.form.load({
                url: 'company_getjob_action.jsp?jobId=' + record.get('jobId'),
                success: function (form, action) {
                    if (!action.result.success) {
                        Ext.Msg.alert('失败', action.result.data.info);
                        return;
                    }
                    var jobTitle = action.result.data.jobTitle;
                    if (jobTitle) {
                        var triggerJob = inputWin.form.getForm().findField("jobTitle");
                        var textJob = getLabel(theJobCategories, jobTitle);
                        //alert(textJob);
                        //alert(jobTitle);
                        if (textJob != jobTitle) {
                            triggerJob.setValue(jobTitle);
                            triggerJob.setRawValue(textJob);
                            inputWin.form.getForm().findField("jobTitleEx").reset();
                        }
                        //自己输入的
                        else {
                            triggerJob.reset();
                            inputWin.form.getForm().findField("jobTitleEx").setValue(jobTitle);;
                        }
                    }
                    var workAddress = action.result.data.workAddress;
                    if (workAddress) {
                        var triggerWorkAddress = inputWin.form.getForm().findField("workAddress");
                        triggerWorkAddress.setValue(workAddress);
                        triggerWorkAddress.setRawValue(getLabel(theRegions, workAddress));
                    }
                },
                waitMsg: '正在读取详情',
                waitTitle: '请稍后...',
                failure: function (form, action) {
                    if (action.result && !action.result.success) {
                        Ext.Msg.alert('失败', action.result.data.info);
                        return;
                    }
                    Ext.Msg.alert('失败', action.response.responseText);
                }
            });
            //window.location = '../company_setjob.jsp?jobId=' + record.get('jobId');
        }
    }
    /*
                 一个工具栏元素结束
                 */
    ,
    //一个分割线
    '-', {
        text: '删除',
        iconCls: 'bdel',
        handler: function () {
            var record = this.getSelectionRecord();
            if (!record) {
                Ext.MessageBox.alert('注意', '请选择表格数据');
                return;
            }
            var my_grid = this;
            Ext.Msg.confirm(getLabel(theJobCategories, record.get('jobTitle')), '确定删除 该职位      ?', function (btn, text) {
                if (btn == 'yes') {
                    my_grid.loadMask.show();
                    Ext.Ajax.request({
                        url: 'company_deljob_action.jsp',
                        success: function (r) {
                            my_grid.loadMask.hide();
                            var result = Ext.decode(r.responseText);
                            if (result.failure) {
                                Ext.Msg.alert('注意', result.info);
                            } else {
                                my_grid.reload();
                            }
                        },
                        failure: function (r) {
                            my_grid.loadMask.hide();
                            Ext.Msg.alert('注意', r.responseText);
                        },
                        disableCaching: true,
                        params: {
                            jobId: record.get('jobId')
                        }
                    });
                }
            });
        }
    },
    //一个分割线
    '-', {
        text: '该职位人才',
        iconCls: 'blist',
        handler: function () {
            var record = this.getSelectionRecord();
            if (!record) {
                Ext.MessageBox.alert('注意', '请选择表格数据');
                return;
            }
            var my_grid = this;
            window.location = '../rcss.jsp?jobCategory=' + record.get('jobTitle');
        }
    },
    //一个分割线
    '-', {
        text: '发布新职位',
        iconCls: 'badd',
        handler: function () {
            //清除原来添加修改窗口数据
            inputWin.form.getForm().reset();
            //显示
            inputWin.win.show();
            // window.location = '../company_newjob.jsp';
        }
    }];
    //右键菜单
    var contextMenu = [toolBar[0], toolBar[2], toolBar[4], '-', toolBar[6]];
    var doubleClickAction = toolBar[0].handler;
    //表格对象
    var grid = new Ext.ux.yiminghe.JsonGridPanel({
        //列元数据
        columns: columnMetaData,
        //每页显示条数
        pageSize: 10,
        //表格宽度
        width: 700,
        //数据源json页面
        dataSource: 'company_jobs_action.jsp',
        //表格名字
        title: '职位列表  , 您目前可用的招才币为 ' + MONEY + ' 枚!',
        //页面div的名字
        renderTo: 'grid-example',
        //单选
        single: true,
        //显示控制
        autoHeight: true,
        viewConfig: {
            forceFit: true
        },
        //选择模型
        sm: new Ext.grid.RowSelectionModel({
            singleSelect: this.single
        }),
        //表格工具栏
        tbar: toolBar,
        //右键菜单
        rowcontextmenu: contextMenu,
        //双击操作
        doubleClick: doubleClickAction
    });
    grid.reload();
    inputWin.form.underGrid = grid;
});
JsonGrid自己简单封装了一下
Ext.namespace("Ext.ux.yiminghe")
Ext.ux.yiminghe.JsonGridPanel = function (config) {
    var fieldsData = [];
    for (var i = 0; i < config.columns.length; i++) {
        fieldsData.push(config.columns[i].dataIndex);
    }
    //config.baseParams=config.baseParams||[];
    //config.baseParams.limit=config.pageSize;
    //config.baseParams.start=0;
    config.store = new Ext.data.JsonStore({
        url: config.dataSource,
        //读取数据的url,
        root: 'rows',
        baseParams: config.baseParams,
        totalProperty: 'results',
        //总共的页数
        fields: fieldsData
    });
    config.store.lastOptions = {
        params: {
            start: 0,
            limit: config.pageSize
        }
    };
    var columns = [new Ext.grid.RowNumberer()];
    for (var i = 0; i < config.columns.length; i++) {
        if (config.columns[i].show) columns.push(config.columns[i]);
    }
    config.columns = columns;
    Ext.ux.yiminghe.JsonGridPanel.addMenuScope(config.tbar, this);
    config.store.on('loadexception', function (othis, options, response, e) {
        Ext.Msg.alert('注意', response.responseText);
        return;
    });
    if (config.dynamicFunc) config.store.on('beforeload', function (store_, options) {
        config.dynamicFunc(options.params);
    });
    if (config.maskAll) config.loadMask = new Ext.LoadMask(Ext.getBody(), {
        msg: "加载中..."
    });
    else config.loadMask = true;
    config.bbar = new Ext.PagingToolbar({ //在grid底层添加分页工具栏
        pageSize: config.pageSize,
        //显示的数据条数
        store: config.store,
        //选择翻页按钮时的加载到grid的数据
        displayInfo: true,
        items: config.pageBarItems,
        plugins: config.pageBarPlugins
    }) //end bbar;
    Ext.apply(this, config);
    Ext.ux.yiminghe.JsonGridPanel.superclass.constructor.call(this);
    if (this.doubleClick) {
        this.on('rowdblclick', function (grid2, rowIndex, ee) {
            var store = grid2.getStore();
            var oRecord = store.getAt(rowIndex);
            this.doubleClick(oRecord);
            ee.stopEvent();
        },
        this);
    }
    if (this.rowcontextmenu) {
        Ext.ux.yiminghe.JsonGridPanel.addMenuScope(this.rowcontextmenu, this);
        this.on('rowcontextmenu', function (grid2, rowIndex, ee) {
            if (!this.rowcontextmenu_) {
                this.rowcontextmenu_ = Ext.menu.MenuMgr.get({
                    id: 'rowcontextmenu_-ctx',
                    items: this.rowcontextmenu
                });
            }
            this.getSelectionModel().selectRow(rowIndex);
            this.rowcontextmenu_.showAt(ee.getXY());
            ee.preventDefault();
        },
        this);
    }
}
Ext.extend(Ext.ux.yiminghe.JsonGridPanel, Ext.grid.GridPanel, {
    getSelectionRecords: function () {
        if (this.getSelectionModel().getSelections()[0]) return this.getSelectionModel().getSelections();
        else {
            //  alert('请选择数据!');
            return false;
        }
    },
    reload: function () {
        this.getStore().reload();
    },
    getSelectionRecord: function () {
        if (this.getSelectionModel().getSelections()[0]) return this.getSelectionModel().getSelections()[0];
        else {
            // alert('请选择数据!');
            return false;
        }
    }
});
Ext.ux.yiminghe.JsonGridPanel.addMenuScope = function (obj, sco) {
    if (!obj) return;
    for (var i = 0; i < obj.length; i++) {
        if (typeof obj[i] == 'string') continue;
        obj[i].scope = sco;
        if (obj[i].menu) yiminghe.dynamicTable.addMenuScope(obj[i].menu, sco);
    }
}其中的单选树,一个panel中套两个树,可以分级选择
if (!yiminghe) var yiminghe = {};
yiminghe.checkedTreeSingle = function (config) {
    this.checks_ = {};
    this.level = config.level || 0;
    this.div = config.div || '';
    this.title = config.title || '';
    this.expandable = config.expandable || false;
    this.expandedInitial = config.expandedInitial || true;
    this.singleExpand = config.expandable || false;
    this.singleClickExpand = config.singleClickExpand || true;
    this.allowEmpty = config.allowEmpty || false;
    this.clickFunc = config.clickFunc;
    this.tree = new Ext.tree.TreePanel({
        useArrows: true,
        autoScroll: true,
        // rootVisible:false,
        style: 'text-align:left',
        animate: false,
        width: config.width,
        height: config.height,
        //enableDD:true,
        //containerScroll: true,
        singleExpand: this.singleExpand
    });
    this.root = new Ext.tree.TreeNode({
        text: this.title,
        draggable: false,
        expanded: this.expandedInitial,
        singleClickExpand: this.singleClickExpand,
        id: yiminghe.checkedTreeSingle.getId()
    });
    //alert(config.height);
    this.setDataArray(config.dataArray);
    this.tree.setRootNode(this.root);
    // render the tree
    //this.tree.render();
    //if (this.root.firstChild)
    //this.tree.expandPath(this.root.firstChild.getPath());
};
yiminghe.checkedTreeSingle.getId = function () {
    /*var id = 1;
     return function() {
     return id++;
     };*/
    return -9999;
};
yiminghe.checkedTreeSingle.prototype = {
    setDataArray: function (newArray, render) {
        var childNodes = this.root.childNodes.slice(0);
        for (var i = 0; i < childNodes.length; i++) {
            this.root.removeChild(childNodes[i]);
        }
        if (this.allowEmpty) {
            var child = new Ext.tree.TreeNode({
                text: '不限制',
                draggable: false,
                singleClickExpand: true,
                id: 'he_empty'
            });
            if (this.clickFunc) child.on('click', this.clickFunc);
            this.root.appendChild(child);
        }
        this.append(newArray, this.root, this.clickFunc);
        if (render) {
            this.tree.getSelectionModel().clearSelections();
            this.root.expand();
        }
    },
    getSelectionNode: function () {
        return this.tree.getSelectionModel().getSelectedNode();
    },
    getExtTree: function () {
        return this.tree;
    },
    hide: function () {
        this.isV = false;
        this.tree.hide();
    },
    isVisible: function () {
        this.isV;
    },
    show: function () {
        this.isV = true;
        this.tree.show();
    },
    render: function () {
        if (this.div) this.tree.render(this.div);
    },
    append: function (a_array, node, func, level) {
        level = level || 0;
        if (level > this.level) return;
        if (a_array) for (var i = 0; i < a_array.length; i++) {
            var child = new Ext.tree.TreeNode({
                text: a_array[i].label,
                draggable: false,
                expandable: this.expandable,
                singleClickExpand: this.singleClickExpand,
                id: a_array[i].key
            });
            if (this.clickFunc) child.on('click', this.clickFunc);
            node.appendChild(child);
            if (a_array[i].children) this.append(a_array[i].children, child, func, level + 1);
        }
    },
    destroy: function () {
        this.checks_ = {};
        this.tree.body.update('');
    }
};
  

 

 

 

 

 

 

  • 大小: 47.4 KB
分享到:
评论
4 楼 yiminghe 2011-02-18  
cencai09 写道
”以前弄的垃圾“是什么意思? 这段代码写得不好?


以前瞎弄的,代码质量太差
3 楼 cencai09 2011-02-17  
”以前弄的垃圾“是什么意思? 这段代码写得不好?

2 楼 yiminghe 2010-10-28  
zhangwe415 写道
这个下面要用的那些包哪里找呢

不要用这个,这个是以前弄的垃圾
1 楼 zhangwe415 2010-10-28  
这个下面要用的那些包哪里找呢

相关推荐

    extjs4mvc的crud

    在"extjs4mvc的crud"这个主题中,我们将深入探讨如何使用ExtJS 4的Model-View-Controller(MVC)架构来实现货物处理的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。 首先,了解MVC模式是...

    Django整合Extjs源码

    通过ExtJS的数据API,前端可以直接与Django的后端进行数据交互,实现异步更新和CRUD操作。 为了使项目能够直接运行,开发者可能已经考虑了以下几点: 1. **环境配置**:确保项目所需的Python环境和Django版本已安装...

    基于ExtJS5的后台管理系统案例 - 源码

    开发者可以通过这个模板快速理解和学习如何使用ExtJS5构建类似的系统。 3. **增删改查操作** 增删改查(CRUD)是数据库操作的基本要素。在ExtJS5中,可以使用Grid Panel配合Editor Grid插件实现数据的编辑,使用...

    EXTJS代码生成器

    1. **Store(存储)**:EXTJS中的数据存储,连接到模型并管理数据加载、刷新、添加、删除等操作,对应于数据库的CRUD操作。 2. **Grid(表格)**:显示和编辑数据的组件,通常与Store和Model结合使用,可以实现数据...

    Extjs 性能优化 High Performance ExtJs

    对于一个 `GridPanel`,上面通常会有 CRUD 操作,对应添加、修改、查看等功能,这些功能通常需要弹出窗口(window)。过去的做法是在加载 `GridPanel` 时一次性加载所有可能用到的组件,如下所示: ```javascript ...

    extjs+asp.net后台管理系统页面

    4. **数据展示与操作**:ExtJS的组件如GridPanel和FormPanel可以用于数据的展示和编辑,配合ASP.NET的数据访问层,可以实现对数据库的CRUD操作。 5. **异步操作**:使用ExtJS的Ajax和Store组件,可以实现异步加载...

    ExtJS和.NEt平台结合

    ASP.NET通过ADO.NET或Entity Framework等数据访问技术,与SQL Server进行通信,执行CRUD(创建、读取、更新、删除)操作。同时,SQL Server 2005还提供了强大的报表服务和分析服务,可用于生成复杂的业务报表和数据...

    php_extjs 增删改查

    - HTML或PHP模板文件:用于初始化ExtJS应用并展示UI。 - CSS样式文件:用于定义UI的外观和布局。 理解并掌握PHP和ExtJS的结合使用,对于开发高效、用户体验良好的Web应用至关重要。在这个项目中,开发者可以通过...

    extjs4 ssh 项目源码

    Struts2 提供了拦截器、结果类型和模板技术,使得动作类更简洁,降低了视图层与控制层的耦合。 2. **Spring**:是一个全面的后端应用框架,它包含了依赖注入、AOP(面向切面编程)、事务管理等功能。Spring 还提供了...

    SpringMVC+Mybatis+ExtJs5.0

    - `src/main/webapp`:存放静态资源,包括ExtJs的JS、CSS文件,以及视图模板。 - `web.xml`:Web应用的部署描述符,配置SpringMVC的前端控制器。 5. **用户管理功能**: 在描述中提到了用户管理的用户信息列表...

    用Extjs做的一个小项目,实现了增删改查

    在"用Extjs做的一个小项目,实现了增删改查"这个项目中,我们可以深入探讨一下ExtJS在实现CRUD(创建Create、读取Read、更新Update、删除Delete)操作中的关键知识点。 1. **组件和布局** - **Grid Panel**:在...

    SSH+ExtJs的demo完全实现

    2. **ExtJS资源**:JavaScript文件(如app.js)、CSS样式文件、HTML模板和图片资源。 3. **数据库配置**:可能有一个或多个XML文件,用于配置Oracle数据库连接信息。 4. **Web应用部署目录**:如WEB-INF目录,包含...

    ExtJS Web应用程序开发指南

    在本《ExtJS Web应用程序开发指南》中,我们将深入探讨三个关键章节,即第9章“ExtJS对Ajax的支持”,第10章“增强型模板”以及第11章“数据模型”。这些章节涵盖的内容是ExtJS框架的核心部分,对于构建高效、交互性...

    基于SpringBoot+ExtJS的企业应用系统通用平台的设计与实现.docx

    ExtJS提供了丰富的组件和模板,可以快速构建复杂的用户界面。开发过程中需要注意以下几点: - **模块化设计**:将页面分解成多个可复用的模块。 - **响应式布局**:确保界面在不同设备上都能正常显示。 - **性能...

    SSH + EXTJS_管理系统

    项目文件可能包括配置文件(struts.xml、spring.xml、hibernate.cfg.xml等)、Java源代码、EXTJS的JavaScript文件、HTML模板以及资源文件等。 为了进一步了解这个项目,你可以查看prjNsLogistics.part1_等压缩包内...

    ExtJS开发的BLOG程序源码

    - `blog-src.zip`:这是源代码文件,包含未编译的ExtJS代码、模板、样式表、控制器等,方便开发者学习和修改。 通过研究这个源码,开发者可以学习到如何使用ExtJS构建实际的Web应用,理解组件化开发的思想,以及...

    ExtJS使用笔记

    ExtJS是一个开源的JavaScript库,主要用于创建富互联网应用程序(RIA)。它以其丰富的组件集、美观的用户界面和良好的浏览器兼容性而著称。在学习和使用ExtJS的过程中,我们需要了解其基础构成,如何引用库文件,...

    struts2.1.8+Hibernate3.3+spring2.5.6+extjs3.2的jar包

    Struts2的核心功能包括动作调度、结果处理、表单验证、国际化和模板技术等。它的优点在于强大的插件支持和灵活的配置,允许开发者通过自定义拦截器来扩展功能。 2. Hibernate3:Hibernate是Java领域的一个ORM解决...

    DeskTop-ExtJs4 demo

    开发者可能使用SQL语句来执行CRUD(创建、读取、更新、删除)操作,或者通过ORM(对象关系映射)工具如MyBatis或Hibernate来与Java代码交互。 4. **Nutz框架**:Nutz是基于Java的全栈框架,它集成了HTTP客户端和...

    ExtJS单用户Bolg使用实例...pdf

    ### ExtJS单用户Blog使用及源码讲解 #### 一、引言 本文档旨在详细介绍一个基于ExtJS的单用户博客系统的开发过程和技术要点。该系统不仅提供了完整的博客功能,还包括了用户管理、权限控制、日志管理等功能模块。本...

Global site tag (gtag.js) - Google Analytics