代码之家  ›  专栏  ›  技术社区  ›  adam

flex-如何获取树itemclick事件来模拟itemopen事件?

  •  1
  • adam  · 技术社区  · 17 年前

    我正在将树控件与XmlListContainer数据提供程序一起使用….当树文件夹打开(使用小三角形)时,我使用itemopen事件和以下代码更新另一个数据提供程序-数据提供程序包含 <slide /> 特定树文件夹中的元素…

    private function itemOpenEvent(event:TreeEvent):void {          
     slideDP = new XMLListCollection(event.item.elements("slide"));  
     slideDP.refresh();                     
    }
    

    如果打开第二个文件夹,thumbdp会更新良好,但单击第一个文件夹(或另一个已关闭的文件夹)时,我希望发生相同的行为(当前必须关闭并重新打开第一个文件夹)。

    所以我使用了一个itemclick事件-但是这会激发一个listevent,我无法很容易地解决如何从xmllistcontainer获取子元素的问题…下面的代码引发了一个越界异常

    private function itemClickEvent(event:ListEvent):void {         
     treeFeed.getItemAt(event.rowIndex);                        
    }
    

    有人能帮忙吗?谢谢)

    1 回复  |  直到 17 年前
        1
  •  2
  •   Eric Belair    17 年前

    我将更改事件侦听器以侦听更改事件,并使用树的SelectedItem属性:

    private function changeHandler(event:ListEvent):void
    {                  
        slideDP = new XMLListCollection(tree.selectedItem.elements("slide"));
    
        slideDP.refresh();                           
    }
    

    可能需要将selecteditem强制转换为xml或xmlList。