ExtJS 刷新后,默认选中刷新前最后一次选中的节点

摘要:
树节点操作完成后,通常需要重新加载以刷新树,但许多业务需要在树刷新后默认选择最后选择的节点。这样,您必须首先保存先前选定节点的信息,然后在重新加载后再次通过节点信息将其逐层扩展到该节点。经过长时间的搜索,我们终于找到了一个可行的解决方案,即通过节点的路径记录节点的位置信息,然后通过路径将其从根节点逐层扩展到最后一个节点。事实证明,这是无效的。最后,id属性被添加到json中。
      在对树节点进行操作后往往需要进行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属性才成功的。

免责声明:文章转载自《ExtJS 刷新后,默认选中刷新前最后一次选中的节点》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇状态通知栏富文本框FreeTextBox的使用 Alec下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

C#使用FFmpeg的总结

上一篇文章提到FFmpeg解决了项目中的视频和语音问题,并表示C#和FFmpeg必须提到两个类库。最后,选择了FFmpeg.AutoGen,它可以通过API更好地控制灵活性,更好地满足您的个人需求。6、 C#FFmpeg使用SDL2实现rtmp播放器7。C#FFmpeg本地mp3,mp4文件播放8。C#FFmpeg在保存到本地文件时播放rtmp视频。...

C#基础系列过滤器与特性

过滤器和特性结合在一起,在方法上优雅地使用过滤器。3.在过滤器中,。NETFrameWork提供了两种类型:一种是提供给ASP的筛选器。NETMVC在命名空间下使用System.Web。另一个是提供给ASP的过滤器。NETWebApi在命名空间下使用System.Web.Http.Filters。这两种类型不能混合使用,否则无法拦截并生效。...

iview表格动态数据实现合并功能

需求原型:代码实现:html part:从'../../libs/c导入{MsgType,PublicType}...

vant上传文件到后端

Html代码<Ts代码文件列表=[]/image/[a-zA-z]+/。test(file.file.type)){this.$toast(“请上传图片”);returnfalse;config).then(res=>})。捕获(()=>拒绝)=>ts=“+newDate().getTime()).然后...

Matlab自定义函数的五种方法 [转]

子函数lfg2只能被主函数和主函数中的其他子函数调用。特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。...

vue升级Babel支持可选链和合并空值运算符

据我所知,无论是webpack项目还是vite项目都需要使用到babel来编译文件。currentItem:tips;}//template使用传入对应的取值地址:string{{text_filter}}其他可玩的ES新特性通过babel的官网,我们可以看到babel支持的"ES新特性"参考:babeljs.io/docs/en/plu…挑几个有意思的说明...