设置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 条评论
登录 后参与评论

相关文章

来自专栏java达人

$(window).load()与$(document).ready()的区别

1.执行时间不同:从字面的意思上理解,$(document).ready()就是文档准备好了。也就是浏览器已经解析完整个html文档,dom树已经建立起来了,...

191100
来自专栏十月梦想

HTML5新增表单类型

HTML5新增了input更多类型的框,如颜色,邮箱,多文件还有对正则表达式的支持!

13930
来自专栏大闲人柴毛毛

linux软件安装(一)——源码安装

Linux软件简介 Linux上几乎所有的软件都经过了GPL授权,因此几乎所有的软件都会提供源码。 而一个软件要在Linux上执行,必须是二进制文件,因此...

37640
来自专栏lgp20151222

js页面刷新跳转的几种方式及区别

59310
来自专栏kwcode

微信小程序调用接口返回数据或提交数据

由于小程序发起网络请求需要通过 wx.request 文档地址 https://mp.weixin.qq.com/debug/wxadoc/dev/api/ne...

37470
来自专栏Youngxj

利用宝塔简易反向代理教程 适用于谷歌、ss站点

92470
来自专栏python学习之旅

Python+Selenium笔记(十六)屏幕截图

 (一) 方法 方法 简单说明 save_screenshot(filename) 获取当前屏幕截图并保存为指定文件 fi...

41770
来自专栏积累沉淀

hbase集群安装(2)-ubuntu下jdk安装

Ubuntu下安装jdk 我的安装路径是根目录下的software 把jdk压缩包解压到software目录下 ? 解压花一会时间 然后设置环境变量的命令 ? ...

20290
来自专栏程序员的碎碎念

微信小程序二维码实例开发

开始 小编初学微信小程序,想做一个二维码生成器;作为一个小白,踩了不少坑,在这里分享给大家“如何在微信小程序上生成二维码”。 步骤 就像写前端代码一样,html...

61550
来自专栏weixuqin 的专栏

Django 项目重命名

  在日常学习工作过程中,我们难免需要复用以前的项目,这里讲下复用 Django 项目并重命名的过程。

17710

扫码关注云+社区

领取腾讯云代金券