2012-02-16 16 views
1

私はExtend4を使用しています。私はtreepanelをリロードし、特定のノードにツリーメニューを展開する必要があります。 次のコードを使用しています。どうすればいいのか教えてください。事前にExtjs 4 treepanel Reload and Expand

//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

リロード私はそれだけで、データが全て取り出され、最終的にからなるように、そしてあなたは、loadイベントに耳を傾けることができ

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はうまく読み込んでいますが、展開していませんが、firebugではエラー "node.getPath not a function"が表示されます。 – siva565

+0

ああ、私の悪い、ごめんなさい、ExtPath4でgetPath()が消えてしまいました。希望のノードを展開するには別の方法がありますが、この記事のMolecule Manの答えを見てください。http://stackoverflow.com/questions/6709106/ expand-a-tree-path-by-internalid-as-parameter –

+0

humm ..ありがとうByteありがとうございました。それはうまく動作します。ノードは私が期待しているものを正確に展開しますが、選択されていません(スタイルに影響します)。一般に、選択されている任意のツリーノードは、選択されたスタイルが異なる。手伝って頂けますか? – siva565