前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设置Flex中Tree组件默认选中一项

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

作者头像
meteoric
发布2018-11-16 14:46:56
8080
发布2018-11-16 14:46:56
举报
文章被收录于专栏:游戏杂谈

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

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

伪代码如下:

代码语言:javascript
复制
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来进行区分),类似如下:

代码语言:javascript
复制
<?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>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012-03-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档