设置Flex中Tree组件默认选中一项

项目中需要用到tree这个组件,但我在做产品的过程中想让程序默认选中tree组件中的某一节点。之前用到的flex的sdk是3.4版本,在使用selectItem时遇到“术语未定义…”,调试跟踪进去发现在SDK里面报错了,后来换成3.6版本,报错是没报错,可是selectItem设置后一直没反应。

 

后来想到的办法是,通过遍历tree的数据源(dataProvider),然后找到指定元素在数据源中的索引值。最后通过设置tree的selectedIndex来解决它,然后调用validateNow()方法进行重绘,这样就达到目的了。

 

伪代码如下:

var idx:Number = -1;
var xml:XML = (tree.dataProvider as XMLListCollection).getItemAt(0) as XML;
var bool:Boolean;

for each (var p:XML in xml.node..@id)
{
idx++;

var parentXML:XML = p.parent() as XML;

if (tId == p.toXMLString() && parentXML.@g != "1")
{
bool = true;
break;
}
}

//todo
 
 
tree的数据源XML(即使通过ID判断的时候,下面也有ID是重复的,但还是有属性g来进行区分),类似如下:
<?xml version="1.0" encoding="UTF-8" ?> 
<node name="root">
<node name="xxx" id="1" g="1">
<node name="xxx" id="4" status="0"/>
<node name="xxx" id="5" status="0"/>
<node name="xxx" id="6" status="0"/>
<node name="xxx" id="7" status="0"/>
</node>
<node name="xxx" id="2" g="1">
<node name="xxx" id="8" status="0"/>
<node name="xxx" id="9" status="0"/>
<node name="xxx" id="10" status="0"/>
<node name="xxx" id="11" status="0"/>
<node name="xxx" id="12" status="0"/>
<node name="xxx" id="13" status="0"/>
</node>
<node name="xxx" id="3" g="1">
<node name="xxx" id="1" status="1"/>
<node name="xxx" id="2" status="1"/>
<node name="xxx" id="3" status="1"/>
</node>
</node>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值