2012-02-16 3 views
1

Json 데이터와 함께 Extjs4 treepanel을 사용하고 있습니다. treepanel을 다시로드하고 지정된 노드에 트리 메뉴를 확장해야합니다. 다음 코드를 사용하고 있습니다. 어떻게하는지 알려주세요. 사전에Extjs 4 treepanel 다시로드하고 확장하십시오.

//Define tree store 

var store = Ext.create('Ext.data.TreeStore', { 
    proxy: { 
     type: 'ajax', 
     url: 'my_tree.php', 
    }, 

    noCache: false 
}); 

// Treepanel 
var treePanel = Ext.create('Ext.tree.Panel', { 
    id: 'mytree', 
    renderTo: 'tree_div', 
    height: 400, 
    bodyBorder: false, 
    border: false, 
    singleExpand: true, 
    rootVisible: false, 
    store: store, 
    useArrows: true 
}); 

//Reload tree 
    function reload_tree(){ 
     var tree_panel = Ext.getCmp('mytree'); 
     tree_panel.enable(); 
     tree_panel.getLoader().dataUrl = 'my_tree.php'; 
     tree_panel.getLoader().load(tree_panel.root); 
     //Expand tree node 
     tree_panel.getLoader().on('load', function(loader, node){ 
       tree_panel.getNodeById(nodeid).expand(); 
    //here node id is tree menu nodeid 
    }); 
    } 

감사

답변

6

다시로드 트리 내가 데이터를 마지막으로 모든 가져와 있도록 그것은, 다음로드 이벤트를 수신 할 수 있습니다 단지

treePanel.getStore().load(); 

를 호출하는 단순한 생각 거기서 원하는 노드를 선택하십시오.

treePanel.on("load", function(treeStore, records, successful, operation)){ 

    var id = 4; // This is the ID of the node that somehow you know in advance 
    var node = treeStore.getNodeById(id); 

    treePanel.expandPath(node.getPath()); 
}); 

HTH!

+0

빠른 재생을 해주셔서 감사합니다. treepanel이 잘로드되지만 확장되지 않습니다. 방화 광에서 오류 "node.getPath가 함수가 아닙니다"를 보여줍니다. – siva565

+0

오, 미안하지만, ExtJS 4에서 getPath()가 사라졌습니다. 원하는 노드를 확장 할 수있는 대안이 있지만,이 게시물의 분자 맨 응답을 확인하십시오. http://stackoverflow.com/questions/6709106/ expand-a-tree-path-by-sending-the-internalid-as-parameter –

+0

humm .. 감사합니다 Byte 노예 덕분에 많은. 괜찮아. 노드가 정확히 기대하고있는 것을 확장하지만 선택되지 않습니다 (스타일 영향). 일반적으로 선택된 어떤 트레 무 노드에는 다른 스타일이 있습니다. 너 나 좀 도와 줄 수있어? – siva565