這篇文章主要介紹了ExtJS 刷新後如何默認選中刷新前最後一次選中的節點,需要的朋友可以參考下
在對樹節點進行操作後往往需要進行reload操作刷新一下樹,但是很多業務都需要在樹形刷新後默認選中最後一次選中的節點。這樣就必須先保存前一次選中節點的信息,在reload之後再次通過節點的信息進行expand逐層展開到這個節點上。 查詢了好久終於找到一個可行的方案,就是通過節點的path來記錄節點的位置信息,然後通過path從root節點開始逐層展開,直到最後一個節點。 完成的代碼如下: 首先是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屬性才成功的。