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 相关文章推荐
用Javascript 获取页面元素的位置的代码
Sep 25 Javascript
JS实现进入页面时渐变背景色的方法
Feb 25 Javascript
ECMAScript6中Set/WeakSet详解
Jun 12 Javascript
jquery删除数组中重复元素
Dec 05 Javascript
jquery实现转盘抽奖功能
Jan 06 Javascript
JS实现的DIV块来回滚动效果示例
Feb 07 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
Feb 17 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
Feb 22 Javascript
使用JavaScriptCore实现OC和JS交互详解
Mar 28 Javascript
jQuery封装animate.css的实例
Jan 04 jQuery
js blob类型url的视频下载问题的解决
Nov 29 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
PHP4实际应用经验篇(5)
2006/10/09 PHP
五个PHP程序员工具
2008/05/26 PHP
php中日期加减法运算实现代码
2011/12/08 PHP
纯js简单日历实现代码
2013/10/05 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
Python中文件遍历的两种方法
2014/06/16 Python
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
使用PDB简单调试Python程序简明指南
2015/04/25 Python
python生成器表达式和列表解析
2016/03/10 Python
在Python的Flask框架中构建Web表单的教程
2016/06/04 Python
Python进阶-函数默认参数(详解)
2017/05/18 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
Python常用特殊方法实例总结
2019/03/22 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
python在地图上画比例的实例详解
2020/11/13 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
小学三年级数学教学反思
2014/01/31 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
音乐教师个人总结
2015/02/06 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
师德培训心得体会2016
2016/01/09 职场文书
初三语文教学反思
2016/03/03 职场文书
MySQL七种JOIN类型小结
2021/10/24 MySQL
科学家测试在太空中培育人造肉,用于未来太空旅行
2022/04/29 数码科技