返回列表 發帖

Ext js accordion 動態變更的問題??

<html>

<head>
<link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />  
<script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>  
<script type="text/javascript" src="ext/ext-all.js"></script>



<title></title>


<script type="text/javascript">


//form

 var skip_store = new Ext.data.JsonStore({
        fields:['id','value'],
        data:[{id:'',value:''},{id:'#',value:'#'}]
    });
    var skip = new Ext.form.ComboBox({
         
        name:'skip',  
        fieldLabel:'skip',  
        mode: 'local',  
        allowBlank : true ,
        triggerAction : 'all',
        store:skip_store,  
        displayField: 'value',
        width:400
    });
    
    //on logic1
    
    var on_logic1_store = new Ext.data.JsonStore({
        url:'1220php_database_test.php',
        
        root:'logic1',
        fields:['id','name']
       
    });    
    var on_logic1 = new Ext.form.ComboBox({
         
        name:'on_logic1',  
        fieldLabel:'on_logic1',  
        mode: 'remote',  
        allowBlank : true ,
        triggerAction : 'all',
        storen_logic1_store,  
        displayField: 'name',
        width:400
    });
    
    var form_long = new Ext.FormPanel({
    
        id:'form_long',
        title: 'form',
        labelWidth: 180,
        bodyStyle: 'padding:10px',
        //bodyStyle: 'padding:10px',  
       // renderTo : 'formPanel2',
        //coloapasable:'true',
       // layout:'fit'
        width : 800,
        autoScroll : true,
        containerScroll : true,
        buttonAlign :'center',
        items:[skip,on_logic1]     
    });
    
    
//form_short


    var form_short = new Ext.FormPanel({  
        id:'form_short',  
        title: 'form',
        labelWidth: 180,
        bodyStyle: 'padding:10px',
        //bodyStyle: 'padding:10px',  
       // renderTo : 'formPanel2',
        //coloapasable:'true',
       // layout:'fit'
        width : 800,
        autoScroll : true,
        containerScroll : true,
        buttonAlign :'center',
        items:[skip]      
    });    
    


//grid
    var cm = new Ext.grid.ColumnModel([{header: 'srl', dataIndex: 'srl',width :50},
                                       {header: 'skip', dataIndex: 'skip',width :50},
                                       {header: 'on logic1', dataIndex: 'on_logic1'}                          
    ]);
    
    var data = [['5', '','Is_Editor'
                ],
                ['10', '','Is_Editor'
                ]
    ];

    var store = new Ext.data.Store({proxy: new Ext.data.MemoryProxy(data),
                                   reader: new Ext.data.ArrayReader({},[
                                       {name: 'srl'},
                                       {name: 'skip'},
                                       {name: 'on_logic1'}                                                               
                                   ])
    });
    store.load(); // 載入資料
    var grid_long = new Ext.grid.GridPanel({
        id:'grid_long',
        //renderTo: "grid",
        store: store,
        cm: cm,
        //autoScroll : true,
        containerScroll : true,
        //viewConfig: {
        //    forceFit: true // 自動調整欄寬[註1],
        //},
        title: "The Specification Name:",
        width:'auto',       
        stripeRows: true,
        loadMask: true,
        height: 400
    });
    
    
    
//grid_short
    var cm = new Ext.grid.ColumnModel([{header: 'srl', dataIndex: 'srl',width :50},
                                       {header: 'skip', dataIndex: 'skip',width :50}                                                               
    ]);
    
    var data = [['5', ''
                ],
                ['10', ''
                ]
    ];

    var store = new Ext.data.Store({proxy: new Ext.data.MemoryProxy(data),
                                   reader: new Ext.data.ArrayReader({},[
                                       {name: 'srl'},
                                       {name: 'skip'},
                                                                                                    
                                   ])
    });
    store.load(); // 載入資料
    var grid_short = new Ext.grid.GridPanel({
        id:'grid_short',
        //renderTo: "grid",
        store: store,
        cm: cm,
        //autoScroll : true,
        containerScroll : true,
        //viewConfig: {
        //    forceFit: true // 自動調整欄寬[註1],
        //},
        title: "The Specification Name:",
        width:'auto',       
        stripeRows: true,
        loadMask: true,
        height: 400
    });    


Ext.onReady(function() {
             
            var accordion = new Ext.Panel({
                region:'center',
                id:'accor',               
                margins:'3 0 3 3',                
                layout:'accordion',               
                align : 'center' ,              
                items: [form_short,grid_short ]
            });
               
            var viewport = new Ext.Viewport({
            
                id:'viewport',
                layout:'border',
                //split:true,
                //collapsible: true,

                items:[
                    accordion,tree]
            });
            
            
            
});


    var root = new Ext.tree.AsyncTreeNode({
        text: 'Specification' ,
        children:         
                [{
                    id: 1,
                    text: 'Inner',
                    children: [{id: 'n21',text: 'Array_Process',leaf: true},
                               {id: 'n22',text: 'Power_Proces',leaf: true},
                               {id: 'n23',text: 'Signal_Process',leaf: true}
                               
                              ]
                 },
                 {
                    id: 3,
                    text: 'Drill',
                    children: [{id: 'y41',text: 'DX_Array',leaf: true},
                               {id: 'y42',text: 'Drill',leaf: true}   
    
                              ]
                },
                {
                   id: 4,
                   text: 'Netlist',
                   children: [{id: 'n51',text: 'Process_1014',leaf: true},
                              {id: 'y52',text: 'DX_1014',leaf: true}   
    
                             ]
                }
  
  
                ]        
        
        
        
    });
    var tree = new Ext.tree.TreePanel({
        
        region: 'west',       
        width: 250,     
        height:580,
        collapsible:true,      
        split:true,      
        root: root,      
        listeners:{
            click:{
                fn:clickListener
            } 
        }
    });
    
    
function clickListener(node,event){
    if(node.isLeaf()){
        //var x = node.id;
        
        if(node.id.charAt(0)=='n'){
            Ext.getCmp('accor').items.remove(grid_short);
            Ext.getCmp('accor').items.add(grid_long);
        
            Ext.getCmp('accor').doLayout(true) ;
            
        }
        else{
        
            Ext.getCmp('accor').items.add(grid_short);
            Ext.getCmp('accor').doLayout(true) ;         
        }
    }    
} 





</script>
   
</head>

<body>
    <div id="grid"></div>
</body>

</html>
附上程式碼~

在下的布局這樣子的 :  

viewport的 items 裡 左邊放tree ,右邊放 panel~
panel的layout為"accordion" ,items 裡 放兩個元素 form及grid~

想要的效果就是點擊左邊樹,右邊的panel能夠隨之變化~~
目前想到的是:
    Ext.getCmp('accor').items.remove(grid_short);      找到該panel將該元素從items裡移除~
    Ext.getCmp('accor').items.add(grid_long);             在items新增一元素~
    Ext.getCmp('accor').doLayout(true) ;                     該 panel重載~

可是已經移除的元素,標題還是在上面,這樣新增加一個元素時就變的看起來有三個,但是被移掉的那個是空的,標題還在~
想請問各位大大有什麼辦法可以移掉標題??
在下想作的就只是:點左邊樹的葉子,然後動態加載右邊的panel(從資料庫讀資料) ,想請問有別的方法還是例子可以參考的?   

卡了好幾天...挺鬱悶的 ~ ~

小弟~先謝謝各位大大了~
ccdff

返回列表 回復 發帖