zoukankan      html  css  js  c++  java
  • 设置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>


  • 相关阅读:
    Pycharm使用
    解决TortoiseGit下载代码每次要输入用户名、密码
    GitLab创建项目
    【编码格式错误】SyntaxError: Non-UTF-8 code starting with
    C 位段,位域
    跳跃表 -- 随机平衡原理
    PHP 中的新语法 new static 是个啥意思?
    位运算之——按位与(&)操作——(快速取模算法)
    Redis Scan迭代器遍历操作原理(一)
    Redis Scan迭代器遍历操作原理(二)
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/2398113.html
Copyright © 2011-2022 走看看