Tree 默认展开某个节点

纠结了一天的时间弄这个,大都说的是用xml文件作为数据源的,因为我用的是arrayCollection作为数据源,所以也就没有试,在此不做评论,下面就说下我找到的方法。
根据flex的文档我们可以知道,要展开某个节点主要有两种方法:
(1)expandItem,这个方法只展开指定的节点,不会展开子节点。
(2)expandChildOf,这个方法会展开指定节点的子节点。
但是单单使用这两个方法不一定可以,还需要注意几个问题:
1、展开的对象一定要是通过selectItem方法得到,也就是说先把要展开的节点设为选中状态,再得到选中的对象
2、要通过callLater调用
下面以展开第一个节点为例,贴出代码
tree.callLater(
new function():void{
tree.selectIndex=0;
tree.expandItem(tree,selectItem,true);
//tree.expandChildrenOf(tree.selectItem,true);
}
)

在Flex中让Tree绑定数据后自动展开节点:
我发现网上流传下面两种代码:

第一种:


treePlayList.dataProvider=results;//刷新

treePlayList.validateNow();//全部展开

treePlayList.selectedIndex=0;

treePlayList.expandChildrenOf(treePlayList.selectedItem,true);

但有些人试过不行, 我也不知道为什么。


第二种:

某些稍微聪明一点的人受到启发想用个延时后再执行就行了:

setTimeout(IniExpand, 1000); //延时1秒

private function IniExpand():void {
TreeView1.selectedIndex=1;
TreeView1.expandItem(TreeView1.selectedItem,true);
}

不过,我亲自试了,根本无效嘛~


其实,我自己想到了一个我认为是权威准确的方法,那就是用callLater方法,再加上匿名代理方法!!!


代码如下:


myTree.callLater(function ():void{myTree.expandChildrenOf(selectedItem.root[0],true);}); //selectedItem.root当然起始节点了(这是在 flash builder 4中测试成功)


这个方法是在某天开窍突然想到Flex/Flash会像C#语言那样,能在方法的参数体里定义一个匿名方法呢?, 类似C#里的匿名代理方法delegate, 结果一试果然成功了,呵呵
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值