2011-08-23 2 views
5

私はtreestoreにネストされたリストを持っています。最初に読み込まれている間、ストアは完全にロードされ、リストはストアに従って表示されます。私は、リフレッシュボタンをクリックすると、私のtreestoreは新しいデータ(最初と同じデータモデルを持つ)でリロードされ、ネストされたリストも新しいデータセットでリロードする必要があります。以下はTreeStoreをリロードするには?

私TreeStoreの定義は、私がstore.loaddata()メソッドを使用して同じことを達成したExt.data.JsonStoreで

rightPaneStoreData = getFolderListData(); 

rightPaneStore =new Ext.data.TreeStore({ 

    autoLoad:false, 

    model: 'FIMT.models.rightPaneModel', 

    root: rightPaneStoreData, 
    proxy: { 

    type: 'memory', 

    reader: { 

     type: 'tree', 
     root: 'items' 
     } 

    }, 
    listeners: { 
     datachanged: function(records){ 
      alert("datachanged"); 
      } 
    } 

    }); 

rightPaneStore.load(); 

です。しかし、私はTreeStoreのloaddata()メソッドを見つけることができませんでした。

親切に私を助けてください。

答えて

0

TreePanelにはJsonStoreのような店がありません。自動的にすべてのノードが表示され、必要に応じてリロードされます。

あなたのルートノード(rightPaneStoreData)は(AJAXを使ってロード)AsyncTreeNodeである場合には、使用することができます:

rightPaneStoreData.reload()
rightPaneStoreDataがルートノードであるため)。

または代わりに(より一般的な):
tree.root.reload();
それはASyncTreeNodeされていない場合

(ツリーは、ツリーへの参照である場合)、あなたはそれを手動で行う必要があるでしょう。 getFolderListData()関数を再度呼び出して、新しいルートをツリーに割り当てます。 (tree.setRootNode()

+0

上記の2つのコードを示唆した私にとってdidntの仕事をスニペット – shatthi

+0

あなたのコンソール上の任意の誤差はありますか? (Chrome Devtools/Firefox Firebug?) –

+0

クロムでは、私はrightpanestoredata referenceとtreestore referenceの両方でreload()が利用できないと言います。 – shatthi

9

これは私のために働いています。私はMVCを使用しています、そして、このコードは私のコントローラで呼び出されます。

treeStore.getRootNode().removeAll(); 
treeStore.load(); 
+0

treeStore.getRootNode()。removeAll(); treeStore.load();を実行しているときに、各ノードに対して同時に発生するajax呼び出しを避けるために必要なものです。 –

+0

これは動作していますが、私のトレストアからレコードを削除するのに時間がかかりすぎる理由はありますか? – Dibish

0
treeStore.getRootNode().removeAll(); 
treeStore.setRootNode({ 
    id: rootNodeId, 
    text: 'root' 
    // other configs in root 
}); 
// if you had non-standard children loads, then you would need to call: 
treeStore.getProxy().load(); 
// if you had non-standard children loads, and you had params in your load, then you would need to call: 
treeStore.getProxy().load({ 
    params: { 
    node: rootNodeId 
    } 
}); 
0
// Remove all current children if clear on load not set 
if (!treeStore.clearOnLoad) { 
    record.removeAll(); 
} 

// Call load, refreshing our view when done... 
var viewRefresher = function() { 
    view.refresh(); 
}; 

treeStore.load({ 
    node: record, 
    callback: viewRefresher 
}); 
関連する問題