Tree控件使用

在Flex的开发中,Tree控件是比较常用的控件,Flex开发文档为我们提供了丰富的示例,但在实际开发中,我们经常要从自己的XML文件中获取数据,而开发文档中这方面资料比较欠缺。

下面我介绍一种比较有用的Tree控件开发方法。
     < mx:Tree  id ="MusicTypeTree"
        left
="5"  right ="5"  
        showRoot
="false"
        labelField
="@label"         
        bottom
="5"  top ="40"
        click
="click(event)" />
        


这是我定义的一个Tree,labelField你可以自己定义成你的XML文件中Label Attribute的Name

  < mx:HTTPService
  
id ="SrvTreeList"
  url
="{urlTREELIST}"
  useProxy
="false"
  result
="init()"
   resultFormat
="xml"
  
/>


定义一个HTTPService,当然也可以是WebService,看你从哪里获得数据了,切记这里的resultFormat一定要是XML,否则无法解析

< mx:Script >
  
<! [CDATA[
   
import  mx.controls.Alert;
   
import  flash.net.URLRequest;
   
private  var XMLTreeList:XML;
   
private  var u:URLRequest;
   
private  function init(): void
   
{
    
//先把数据取出来交给XML,再交给dataProvider,因为dataProvider不能直接解析String为XML
    XMLTreeList=XML(SrvTreeList.lastResult.toString());
    MusicTypeTree.dataProvider
=XMLTreeList;
   }

   
   
private  function click(obj:Event): void
   
{
    
//如果有value属性,也就是子node,直接打开相关页面
    if(MusicTypeTree.selectedItem.hasOwnProperty("value"))
    
{
     u
=new URLRequest(MusicTypeTree.selectedItem.@value);
     navigateToURL(u);
    }
else{
     
//没有那就展开,如果展开了就收缩
     MusicTypeTree.expandItem(MusicTypeTree.selectedItem,!MusicTypeTree.isItemOpen(MusicTypeTree.selectedItem),true);
    }

   }

  ]]
>
 
</ mx:Script >


这就是上面两个控件牵扯到的init()和click()方法的代码,别忘了HTTPService先要在页面加载完成后send()下,否则没数据。init()方法让Tree显示出来,click方法接受事件的触发,当然click事件可以根据程序需要进行修改。

下面是我的XML文件

<? xml version="1.0" encoding="utf-8" ?>
< MyMusicOnline >
    
< node  label ="Piano" >
        
< node  label ="Piano1"  value ="http://www.gcoresoft.com/" />
        
< node  label ="Piano2" />
    
</ node >
    
< node  label ="Bass" >
        
< node  label ="Bass1" />
        
< node  label ="Bass2" />
    
</ node >
    
< node  label ="Sax" >
        
< node  label ="Sax1" />
        
< node  label ="Sax2" />
    
</ node >
    
< node  label ="Guitar" >
        
< node  label ="Guitar1" />
        
< node  label ="Guitar2" />
    
</ node >
</ MyMusicOnline >
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值