当前位置: 代码迷 >> Ajax >> .关于EXTJS combo 下拉树的有关问题
  详细解决方案

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

热度:721   发布时间:2012-06-14 16:00:31.0
求助....关于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();


}
 
  相关解决方案