ExtJSのrefresh_extjs後にデフォルトでリフレッシュする前に選択された最後のノードを選択する方法

WBOY
リリース: 2016-05-16 16:53:32
オリジナル
978 人が閲覧しました

ツリー ノードを操作した後、多くの場合、ツリーを更新するためにリロード操作を実行する必要がありますが、多くの企業では、ツリーが更新された後、デフォルトで最後に選択したノードを選択する必要があります。このように、以前に選択したノードの情報を最初に保存し、リロード後にそのノード情報をレイヤーごとにこのノードに再度展開する必要があります。

長い間クエリを続けた結果、最終的に実行可能な解決策を見つけました。それは、ノードのパスを通じてノードの位置情報を記録し、ルート ノードから開始してレイヤーごとにそれを拡張することです。最後のノードまでのパス。

完成したコードは次のとおりです:
最初は 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);
}, this);


Extjs3.0 とは異なります, Extjs4.2 は次のように記述されています


idPath = selNode.getPath("id");
tree.getStore().load({
node:tree.getRootNode(),
callback:function () {
tree.expandPath(idPath) , 'id');
}
}) ;


バックグラウンドで返されるツリーの json データ内のノードには、元々 id 属性が含まれている必要があることに注意してください。この属性はありませんでしたが、getPath メソッドのパラメーターを別の属性に変更しました。これが効果的でないことは事実によって証明されており、最終的に成功するために json に id 属性が追加されました。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート