ツリーノードで操作した後、ツリーを更新するためにリロード操作を実行する必要があることがよくありますが、多くの企業は、ツリーの更新後にデフォルトで最後に選択したノードを選択する必要があります。このようにして、最初に選択したノードの情報を前に保存し、次にリロード後にノードの情報を介してレイヤーごとにレイヤーを展開する必要があります。
長い間検索した後、最終的に実行可能なソリューションを見つけました。これは、ノードのパスを介してノードの位置情報を記録し、最後のノードまでルートノードからルートノードからレイヤーごとにレイヤーを展開します。
完成したコードは次のとおりです。
まず、extjs3.xバージョンのメソッド:
コードコピーは次のとおりです。
//選択したノードを取得します
var node = tree.getSelectionModel()。getSelectedNode();
if(node == null){//オーバーロードツリーは選択されていません
tree.getRootNode()。reload();
} else {//ツリーをリロードして、デフォルトで最後に選択したノードを選択します
var path = node.getPath( 'id');
tree.getLoader()。load(tree.getRootNode()、
function(treenode){
tree.expandpath(path、 'id'、function(bsucess、olastnode){
tree.getSelectionModel()。select(olastnode);
});
}、 これ);
}
extjs3.0とextjs4.2の違いは次のとおりです
コードコピーは次のとおりです。
idpath = selnode.getPath( "id");
tree.getStore()。load({
ノード:tree.getRootNode()、
コールバック:function(){
tree.expandpath(idpath、 'id');
}
});
木のJSONデータがバックグラウンドで返された場合、ノードには元々この属性が含まれていないことに注意してください。これは効果を達成できないことがわかり、最後に、ID属性がJSONに追加されました。