首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

.关于EXTJS combo 下拉树的有关问题

2012-06-14 
求助....关于EXTJS combo 下拉树的问题如上,我打开一个window的时候会出现这样一个画面.第一次选择文本导

求助....关于EXTJS combo 下拉树的问题




如上,我打开一个window的时候会出现这样一个画面.第一次选择文本导入和接口导入2个tab页的时候一切正常
然后这个时候我关闭了这个window 然后再次打开的时候 切换到接口导入 就出现了第三幅图片的样子.感觉做了2次render

JScript code
getFileTree=null;getInterfaceTree=null;getPanel_2=null;getPanel=null;function uploadReq(){        //导入文件树        getFileTree=function(){                    var addFileRoot = new Ext.tree.AsyncTreeNode({                        text : '文件名称',                        expanded : true,                        id : '1'                    });                var addFileTree = new Ext.tree.TreePanel({                        loader : new Ext.tree.TreeLoader({                                    dataUrl : 'req/getNode.jsp'                                }),                        root : addFileRoot,                        autoScroll : true,                        animate : false,                        useArrows : false,                        border : false                    });            var comboxWithFileTree = new Ext.form.ComboBox({                        id : 'filetree',                        store : new Ext.data.SimpleStore({                                    fields : [],                                    data : [[]]                                }),                        editable : false,                        value : ' ',                        emptyText : '请选择...',                        fieldLabel : '文件名称',                        id:'fildName',                        anchor : '90%',                        mode : 'local',                        triggerAction : 'all',                        maxHeight : 390,                        tpl : "<tpl for='.'><div style='height:390px'><div id='addFileTreeDiv'></div></div></tpl>",                        allowBlank : false,                        onSelect : Ext.emptyFn                    });            // 监听下拉树的节点单击事件            addFileTree.on('click', function(node) {                        comboxWithFileTree.setValue(node.text);                        if(!node.hasChildNodes()){//如果选中的节点不是最终的子节点就不会关闭下拉树                        comboxWithFileTree.collapse();//关闭下拉树                        }                    });            // 监听下拉框的下拉展开事件            comboxWithFileTree.on('expand', function() {                        // 将UI树挂到treeDiv容器                        addFileTree.render('addFileTreeDiv');                        // addDeptTree.root.expand(); //只是第一次下拉会加载数据                        addFileTree.root.reload(); // 每次下拉都会加载数据                    });                                        return comboxWithFileTree;                    }                                                    //导入接口树         getInterfaceTree=function(){                    var addInterfaceRoot = new Ext.tree.AsyncTreeNode({                        text : '文件名称',                        expanded : true,                        id : '1'                    });                var addInterfanceTree = new Ext.tree.TreePanel({                        loader : new Ext.tree.TreeLoader({                                    dataUrl : 'req/getNode.jsp'                                }),                        root : addInterfaceRoot,                        autoScroll : true,                        animate : false,                        useArrows : false,                        border : false                    });            // 监听下拉树的节点单击事件            var comboxWithInterfaceTree = new Ext.form.ComboBox({                        id : 'interfancetree',                        store : new Ext.data.SimpleStore({                                    fields : [],                                    data : [[]]                                }),                        editable : false,                        value : ' ',                        emptyText : '请选择...',                        fieldLabel : '接口名称',                        id:'interfaceName',                        anchor : '90%',                        mode : 'local',                        triggerAction : 'all',                        maxHeight : 390,                        tpl : "<tpl for='.'><div style='height:390px'><div id='addInterfaceTreeDiv'></div></div></tpl>",                        allowBlank : false,                        onSelect : Ext.emptyFn                    });            addInterfanceTree.on('click', function(node) {                    comboxWithInterfaceTree.setValue(node.text);                        comboxWithInterfaceTree.collapse();//关闭下拉树                    });            // 监听下拉框的下拉展开事件            comboxWithInterfaceTree.on('expand', function() {                        // 将UI树挂到treeDiv容器                        addInterfanceTree.render('addInterfaceTreeDiv');                        // addDeptTree.root.expand(); //只是第一次下拉会加载数据                        addInterfanceTree.root.reload(); // 每次下拉都会加载数据                    });                                        return comboxWithInterfaceTree;                    }                getPanel=function(){    var panel = new Ext.FormPanel({                id : 'text',                name : 'addtext',                defaultType : 'textfield',                labelAlign : 'right',                labelWidth : 75,                frame : false,                bodyStyle : 'padding:1 5 0',                items : [ getFileTree(),{                            fieldLabel : '文件上传',                            inputType: 'file',                            name : 'file',                            id : 'file',                            anchor : '90%'                        }, {                             xtype:"panel",                             layout:"column",                             fieldLabel:'比对类型',                             anchor : '90%',                             isFormField:true,                             items:[{                               columnWidth:.5,                               xtype:"radio",                              boxLabel:"按日期",                               name:"type1"                             },{                               columnWidth:.5,                               checked:true,                               xtype:"radio",                               boxLabel:"按内容",                               name:"type1"                             }]                        }]            })                return panel;                        }                        getPanel_2=function(){    var panel_2 = new Ext.FormPanel({                id : 'port',                name : 'addport',                defaultType : 'textfield',                labelAlign : 'right',                labelWidth : 75,                frame : false,                bodyStyle : 'padding:1 5 0',                items : [ getInterfaceTree(),  {                            xtype:'button',                            fieldLabel : '测试连接',                            text:"测试",                            anchor : '40%'                        },{                                    xtype:"combo",                                    fieldLabel: '选择需求',                                    name: 'combo',                                                                        store: new Ext.data.SimpleStore({                                    fields: ['value', 'text'],                                    data: [                                            ['value1', 'text1'],                                            ['value2', 'text2']                                        ]                                    }),                                    displayField: 'text',                                    valueField: 'value',                                    mode: 'local',                                    emptyText:'请选择',                                    anchor : '90%'                                },                            {                                 xtype:"panel",                                 layout:"column",                                 fieldLabel:'比对类型',                                 anchor : '90%',                                 isFormField:true,                                 items:[{                                       columnWidth:.5,                                       xtype:"radio",                                      boxLabel:"按日期",                                       name:"type2"                                     },{                                       columnWidth:.5,                                       checked:true,                                       xtype:"radio",                                       boxLabel:"按内容",                                       name:"type2"                                 }]                        }]            })            return     panel_2;            }     var tabs=new Ext.TabPanel({        region:'center',        margins:'3 3 3 0',        activeTab:0,        defaults:{autoScroll:true}       });              tabs.add({        title: '文本导入',        layout: 'fit',        items: getPanel()    });       tabs.add({        title: '接口导入',        layout: 'fit',        items: getPanel_2()    });                               var win=new Ext.Window({                        title:'导入方式',                        closable:true,                         collapsible : true, // 是否可收缩                        maximizable : true, // 设置是否可以最大化                        width:350,                        modal:true,                        height:220,                        border:false,                        layout:'border',                        buttonAlign : 'right',                        items:[tabs],                        buttons : [{                                text : '导入',                                iconCls : 'acceptIcon'                            },{                                text : '关闭',                                iconCls : 'deleteIcon',                                handler : function() {                                win.close();                                }                            }]                       });                       win.show();} 



[解决办法]
感觉是你关闭窗体的时候没有销毁窗体中的组件 关闭的时候需销毁窗体中的组件
[解决办法]
最简单的方式,你把窗口设置一个id,关闭窗口closeAction : 设置为隐藏模式,每次打开窗口时检查id是否存在,如果存在就show,不必新产生窗口!

热点排行