隨筆-348  評論-598  文章-0  trackbacks-0

          在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>

           

          希望我的方法對大家的開發有所幫助。



          ---------------------------------------------------------
          專注移動開發

          Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
          posted on 2007-04-22 20:15 TiGERTiAN 閱讀(3746) 評論(1)  編輯  收藏 所屬分類: Flex

          評論:
          # re: Flex中Tree控件的開發 2007-06-05 11:33 | fanzy
          不知道是否能講解一下:關于如何在xml中定義各節點的圖標,并實現非葉子節點與葉子節點的圖標綁定?

          E-mail:fanzy1981.126.com  回復  更多評論
            
          主站蜘蛛池模板: 甘孜| 岳普湖县| 砀山县| 泸定县| 佛山市| 手机| 龙胜| 定襄县| 武义县| 大同县| 从化市| 密山市| 淮安市| 新竹县| 六枝特区| 阿拉尔市| 定陶县| 图木舒克市| 龙川县| 保定市| 营山县| 岱山县| 米易县| 和林格尔县| 鄂托克前旗| 濮阳市| 临沧市| 海兴县| 东源县| 诏安县| 昆明市| 黄梅县| 彰化市| 微博| 长治市| 三穗县| 礼泉县| 钟山县| 丹凤县| 驻马店市| 洪江市|