日期:2014-05-16  浏览次数:20539 次

Ext.tree的展开"+"图标有click事件吗?什么搞?
我做了一个EXT树,树节点很多,树很深;想每次点击树的加号就展开2级下级节点,什么做?
我试过expand事件,但expand是只要有节点展开就触发.结果导致有几十个子节点就触发几十次,这显然不合理.
试问:是否"+"上可增加"click"事件?或有类似解决办法?
------解决方案--------------------
点击一下只展开2级下级节点,我的理解你说的是只展开两个子节点而不是孙子节点,问题是其他子节点如何载入呢?再点击一次父节点?一般情况下,异步载入是点击一下就载入所有的子节点.如果你是想点击一下就同时载入子节点和孙子节点,你完全可以根据点击的节点id手动载入下级及孙子节点.
------解决方案--------------------
监听expand事件,处理的时候判断一下节点的深度,如果是你需要处理的那一层,加载两次
------解决方案--------------------
给树加个监听节点的点击事件,点节点的时候进后台查询该节点的所有下级节点然后页面上加载出来;
------解决方案--------------------
我觉得“+”你所要的事件完全就是要么是expand事件,要么是collapse事件。。。还会有什么事件呢?
完全可以用这两个代替啊。
------解决方案--------------------
引用:
我觉得“+”你所要的事件完全就是要么是expand事件,要么是collapse事件。。。还会有什么事件呢?
完全可以用这两个代替啊。
关键是你click不就是为expand或者collapse吗?所以说你的每个click都能用expand或者collapse事件捕捉到,也就没有必要用click了
------解决方案--------------------
展开下面两层不一定非要click事件

用expandChildNodes(true)可以展开当前node的所有子节点和子节点的子节点

用expandChildNodes(false)可以展开当前node的子节点但不展开子节点的子节点

要判断当前节点是否有未展开的子节点的话,似乎没有直接可用的类。

要么循环当前所有子节点然后用isExpanded来判断每个子节点是否展开。

要么先提前加载一个array,array里的每一项对应一个子节点,初始值为0.在expand子节点时给array的对应项赋值1。最后可根据array里的值判断是否有未展开的子节点

其它再简单的办法我就不知道了
------解决方案--------------------
引用:
通过使用证明,expand和collapse是不能替代click的。我想实现的效果是每次点击“+”展开下面两层,而用expand会循环跌代触发"expand"事件导致程序报错,很难通过各种判断绕过去。
还有一个问题:是否有简单的办法 判断当前节点是否有未展开的子节点?如:当前节点有5个子节点,我如何判断这5个节点是否完全展开?谁回答我就给谁结贴

是否有子节点是你要在后台判断,然后给节点的isleaf属性设置为true和false
------解决方案--------------------
treenode是有click事件的