ExtJSの更新後、更新前に最後に選択したノードのデフォルトの選択はどうなりますか?


ツリーノードを操作すると、ツリーをリフレッシュする必要がありますが、多くのサービスはツリーリフレッシュ後に最後に選択したノードをデフォルトで選択する必要があります。このように、先に選択されたノードの情報を保存し、reloadの後、再びノードの情報によってexpandを行い、このノードに階層ごとに展開しなければならない。長い間調べた結果、ノードのパスによってノードの位置情報が記録され、最後のノードまで、パスによってrootノードから層毎に展開されることになる。完成したコードは以下の通りです。まずextjs 3.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);
});
}, this);
}
とExtjs 3.0とは違って、Extjs 4.2という書き方です。
 
idPath = selNode.getPath("id");
tree.getStore().load({
node: tree.getRootNode(),
callback: function () {
tree.expandPath(idPath, 'id');
}
});
で注意したいのはバックグラウンドで戻ってきたツリーのjsonデータの場合、ノードはid属性を含んでいなければなりません。元々私はこの属性を持っていませんが、getPathメソッドのパラメータを他の属性に変えます。これは効果がないと証明されました。最後にJsonにid属性を追加して成功しました。