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


Posted in Javascript onApril 03, 2014

在对树节点进行操作后往往需要进行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属性才成功的。
Javascript 相关文章推荐
父窗口获取弹出子窗口文本框的值
Jun 27 Javascript
js前台判断开始时间是否小于结束时间
Feb 23 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
Javascript中实现String.startsWith和endsWith方法
Jun 10 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
Nov 02 Javascript
javascript实现很浪漫的气泡冒出特效
Sep 05 Javascript
详解如何在项目中使用jest测试react native组件
Feb 09 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
Aug 14 Javascript
angularjs请求数据的方法示例
Aug 06 Javascript
vue路由传参的基本实现方式小结【三种方式】
Feb 05 Javascript
weui上传多图片,压缩,base64编码的示例代码
Jun 22 Javascript
JS实现简单的九宫格抽奖
Jun 28 Javascript
单击和双击事件的冲突处理示例代码
Apr 03 #Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
Apr 03 #Javascript
邮箱下拉自动填充选择示例代码附图
Apr 03 #Javascript
JS获取网页属性包括宽、高等等
Apr 03 #Javascript
jQuery的$.proxy()应用示例介绍
Apr 03 #Javascript
js实现的复制兼容chrome和IE
Apr 03 #Javascript
JS实现局部选择打印和局部不选择打印
Apr 03 #Javascript
You might like
基于mysql的论坛(6)
2006/10/09 PHP
PHP5 安装方法
2007/01/15 PHP
PHP 缓存实现代码及详细注释
2010/05/16 PHP
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
2014/09/27 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
PHP小偷程序的设计与实现方法详解
2016/10/15 PHP
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
2013/02/04 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
vue - vue.config.js中devServer配置方式
2019/10/30 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
商务英语专业自荐信
2013/10/14 职场文书
外贸英语毕业生自荐信
2013/11/14 职场文书
什么是就业协议书
2014/04/17 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
建议书范文
2015/02/05 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS