easyui tree refresh 问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了easyui tree refresh 问题相关的知识,希望对你有一定的参考价值。
采用easyui实现树的异步加载,效果如图:
这个时候调用$("treeData").tree('reload');方法,刷新结果和上图一样,但是展开一个节点后,在调用这个方法,刷新的结果就只显示展开后的子节点,而不显示展开前存在的节点。比如展开管理员节点,效果如下:
这个时候调用reload方法,就只显示管理员的子节点,如下:
而本来要的想只展示根节点的效果没有出现
假设你的tree定义的时候的url是"urlA",在onBeforeExpand的时候是"urlB",那么reload这个tree的代码是这样的:
function treeReload()$("#tt").tree("options").url="urlA";
$("#tt").tree("reload");
举例:
假如自定义的tree是这样的:
<ul id="tt" class="easyui-tree" data-options="
url:"urlA",
onBeforeExpand:function(node)
$('#tt').tree('options').url="urlB"; //展开时发送请求去加载节点
"></ul>
那么调用treeReload()方法就可以刷新这个tree了。其实就是把tree的加载子节点的url给赋值成根节点的url,然后reload。 参考技术A 假设你的tree定义的时候的url是"urlA",在onBeforeExpand的时候是"urlB",那么reload这个tree的代码是这样的:
123456789101112131415function treeReload() $("#tt").tree("options").url="urlA"; $("#tt").tree("reload"); 举例:假如自定义的tree是这样的: <ul id="tt" class="easyui-tree" data-options=" url:"urlA", onBeforeExpand:function(node) $('#tt').tree('options').url="urlB"; //展开时发送请求去加载节点 "></ul> 那么调用treeReload()方法就可以刷新这个tree了。其实就是把tree的加载子节点的url给赋值成根节点的url,然后reload。 参考技术B
展开节点之前记录节点,关闭删除记录的节点,reload之后就遍历得到的节点信息,然后通过expand方法展开节点。
onLoadSuccess:function()var list=[];
for(var j=0;j<expnode.length;j++)
list.push(expnode[j])
$("#easytree").tree("collapseAll");
for(var i=0;i<list.length;i++)
var node = $('#easytree').tree('find', list[i]);
$('#easytree').tree('expand', node.target);
,
onBeforeExpand:function(node)
expnode.push(node.id.toString());
,
onBeforeCollapse:function (node)
var i=expnode.indexOf(node.id.toString());
if(i>=0)
expnode.splice(i,1);
参考技术C 你是不是load整棵tree了,而且刷的是根节点追问
我想要的结果是load整棵树,load根节点。但是使用逐级加载,调用reload,加载的是最新展开那一级子节点。
追答$("treeData").tree('reload');是在哪里调用的,应该加个target参数吧
参考技术D 哥们解决没?追问指定target,确实可以实现刷新那个节点下的子节点。但是如果刷新的是一级节点,这些节点没有上级节点,这个时候的target怎么指定。
追答试试看他的parent
以上是关于easyui tree refresh 问题的主要内容,如果未能解决你的问题,请参考以下文章
问大神们一个问题,easyui-tree多节点全部加载速度缓慢的解决办法?