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

          在Flex的開發(fā)中,Tree控件是比較常用的控件,F(xiàn)lex開發(fā)文檔為我們提供了豐富的示例,但在實際開發(fā)中,我們經(jīng)常要從自己的XML文件中獲取數(shù)據(jù),而開發(fā)文檔中這方面資料比較欠缺。

          下面我介紹一種比較有用的Tree控件開發(fā)方法。

              <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,看你從哪里獲得數(shù)據(jù)了,切記這里的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
             
          {
              
          //先把數(shù)據(jù)取出來交給XML,再交給dataProvider,因為dataProvider不能直接解析String為XML
              XMLTreeList=XML(SrvTreeList.lastResult.toString());
              MusicTypeTree.dataProvider
          =XMLTreeList;
             }

             
             
          private function click(obj:Event):void
             
          {
              
          //如果有value屬性,也就是子node,直接打開相關(guān)頁面
              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()下,否則沒數(shù)據(jù)。init()方法讓Tree顯示出來,click方法接受事件的觸發(fā),當然click事件可以根據(jù)程序需要進行修改。

          下面是我的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>

           

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



          ---------------------------------------------------------
          專注移動開發(fā)

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

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

          E-mail:fanzy1981.126.com  回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 建阳市| 张家口市| 河间市| 呼伦贝尔市| 太康县| 古蔺县| 文成县| 和平区| 祁连县| 桐乡市| 大冶市| 秦皇岛市| 德化县| 桂阳县| 彭山县| 四会市| 宁陕县| 百色市| 六枝特区| 青田县| 临夏市| 黔江区| 民丰县| 英德市| 广饶县| 莎车县| 若羌县| 诏安县| 巴青县| 磐安县| 加查县| 滁州市| 中山市| 新宾| 海城市| 原阳县| 柞水县| 永吉县| 祁门县| 余干县| 宁德市|