Flex中实现Tree绑定数据后自动展开节点

用Flex/Flash做开发的同志们应该会使用
expandChildrenOf(item,true)方法来使用Tree组件在绑定数据后自动展开所有树型节点(不需要用户再自己点击展开节点,会方
便许多),而在Flex开发帮忙文档中很明确写道:

<Exchanges xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://equityapi.morningstar.com/">
  <MessageInfo>
    <MessageCode>200</MessageCode>
    <MessageDetail>Request data successfully</MessageDetail>
  </MessageInfo>
  <ExchangeEntityList>
    <ExchangeEntity>
      <ExchangeId>ARCX</ExchangeId>

      <ExchangeName>NYSE ARCA</ExchangeName>
      <MIC>ARCX</MIC>
      <RegionId>NRA</RegionId>
      <RegionName>North America</RegionName>
      <CountryId>USA</CountryId>
      <CountryName>United States</CountryName>

    </ExchangeEntity>
    <ExchangeEntity>
      <ExchangeId>PINX</ExchangeId>
      <ExchangeName>PINK SHEETS LLC (NQB)</ExchangeName>
      <MIC>PINX</MIC>
      <RegionId>NRA</RegionId>
      <RegionName>North America</RegionName>

      <CountryId>USA</CountryId>
      <CountryName>United States</CountryName>
    </ExchangeEntity>
    <ExchangeEntity>
      <ExchangeId>ASE</ExchangeId>
      <ExchangeName>NYSE AMEX EQUITIES</ExchangeName>
      <MIC>XASE</MIC>

      <RegionId>NRA</RegionId>
      <RegionName>North America</RegionName>
      <CountryId>USA</CountryId>
      <CountryName>United States</CountryName>
    </ExchangeEntity>
    <ExchangeEntity>
      <ExchangeId>NAS</ExchangeId>

      <ExchangeName>NASDAQ</ExchangeName>
      <MIC>XNAS</MIC>
      <RegionId>NRA</RegionId>
      <RegionName>North America</RegionName>
      <CountryId>USA</CountryId>
      <CountryName>United States</CountryName>

    </ExchangeEntity>
    <ExchangeEntity>
      <ExchangeId>NYS</ExchangeId>
      <ExchangeName>NEW YORK STOCK EXCHANGE, INC.</ExchangeName>
      <MIC>XNYS</MIC>
      <RegionId>NRA</RegionId>
      <RegionName>North America</RegionName>

      <CountryId>USA</CountryId>
      <CountryName>United States</CountryName>
    </ExchangeEntity>
    <ExchangeEntity>
      <ExchangeId>OTC</ExchangeId>
      <ExchangeName>OTC BULLETIN BOARD</ExchangeName>
      <MIC>XOTC</MIC>

      <RegionId>NRA</RegionId>
      <RegionName>North America</RegionName>
      <CountryId>USA</CountryId>
      <CountryName>United States</CountryName>
    </ExchangeEntity>
    <ExchangeEntity>
      <ExchangeId>GREY</ExchangeId>

      <ExchangeName>Grey Market</ExchangeName>
      <MIC>PSGM</MIC>
      <RegionId>NRA</RegionId>
      <RegionName>North America</RegionName>
      <CountryId>USA</CountryId>
      <CountryName>United States</CountryName>

    </ExchangeEntity>
  </ExchangeEntityList>
</Exchanges>

"If you set dataProvider and then immediately call expandChildrenOf() you may not see the correct behavior. You should either wait for the component to validate or call the validateNow() method. "

如果使用不当,是看不到任何效果的,这会让许多新手郁闷不以!1.gif

  我发现网上流传下面两种代码: 

Tree的全部节点展开 - royanxin  - royanxin的博客第一种:

treePlayList.dataProvider=results;//刷新Tree的全部节点展开 -  royanxin - royanxin的博客

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);
            }

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


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

代码如 下:

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

这个方法是在某天开窍突然 想到Flex/Flash会像C#语言那样,能在方法的参数体里定义一个匿名方法呢?, 类似C#里的匿名代理方法delegate, 结果一试果然成功了,呵呵

转载于:https://www.cnblogs.com/techmango/archive/2011/06/03/Flex_Tree_Auto_expandChildrenOf.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值