2011-09-15 5 views
1

Je veux faire un arbre dynamique en utilisant un chargement paresseux, chaque fois que j'ouvre un dossier, l'arbre envoie une requête http au serveur, dans ce script j'utilise du texte statique pour tester l'arbre mais, J'obtiens dans l'étiquette de la racine tout le texte XML assigné au fournisseur de données, puis quand j'ouvre le dossier racine j'ai les enfants avec les bonnes étiquettes, et les événements d'openitem et de closeitem ne tirent pas comment pourrais-je les faire fonctionner, tout aide est la bienvenueArbre dynamique dans Flex

 import flash.net.URLLoader; 
     import flash.net.URLRequest; 
     import flash.net.URLRequestMethod; 
     import flash.net.URLVariables; 

     import mx.collections.XMLListCollection; 
     import mx.events.ListEvent; 

     var origXML:XML; 

     public function initList() 
     { 
      //tree.rootVisible = false; 

      //TODO: Get this XML from a data service 
      var origXMLString:String = "<node isBranch=\"true\"><node>supernode1</node>" + 
       "<node>supernode2</node>" + 
     //"<node label=\"supernode2\" someProp=\"sdsdf \" isBranch=\"true\"/></node>" + 
       //"<node label=\"supernode3\" someProp=\"sdsdf \" isBranch=\"true\"/></node>" + 
       "</node>"; 

      origXML = new XML(origXMLString); 
      tree.dataProvider = origXML; 
     } 
     public function open(event:Object) 
     { 
      var selectedNode:Object = event.node; 

      var myXMLList:XMLList = new XMLList(selectedNode); 

      //TODO: Get this XML from a data service based on the selected node. 
      var newXMLString:String = "<childnode1 label=\"childnode1\" someProp=\"sdsdf \" isBranch=\"true\" />" + 
       "<childnode2 label=\"childnode2\" someProp=\"sdsdf \" isBranch=\"false\" />" + 
       "<childnode3 label=\"childnode3\" someProp=\"sdsdf \" isBranch=\"true\" />" ; 

      var myNewXMLList:XMLList = new XMLList(newXMLString); 

      selectedNode.setChildren(myNewXMLList); 

     /* myText1.text = selectedNode.toXMLString(); 
      myText2.text = myTree.dataProvider.source[0]; */ 
     tree.dataProvider = origXML; 
     } 

     public function close(event:Object) 
     { 
      var selectedNode:Object = event.node; 

      var myXMLList:XMLList = new XMLList(selectedNode); 

      removeAllDecendants(myXMLList); 

     /* myText1.text = selectedNode.toXMLString(); 
      myText2.text = myTree.dataProvider.source[0]; */ 
      tree.dataProvider = origXML; 
     } 

     public function removeAllDecendants(xmlList:XMLList) 
     { 
      var myDescendantXMLList:XMLList = xmlList.descendants(); 
      var myDecendentXMLListCollection:XMLListCollection = new XMLListCollection(myDescendantXMLList); 
      myDecendentXMLListCollection.removeAll(); 
     } 

     private function send_data():void { 

      var loader : URLLoader = new URLLoader(); 
      var request : URLRequest = new URLRequest("http://localhost/index.php"); 
      // pass the post data 
      request.method = URLRequestMethod.POST; 
      var variables : URLVariables = new URLVariables(); 
      variables.s = "haha"; 
      request.data = variables; 

      // add handlers 
      loader.addEventListener(Event.COMPLETE, on_complete); 
      loader.load(request); 
     // userRequest.send(); 
     } 

     private function on_complete(e : Event):void{ 



     } 



    ]]> 
</fx:Script> 
<mx:Tree id="tree" x="103" y="49" width="445" height="278" enabled="true" 
     itemClose="close(event)" itemOpen="open(event)" selectedIndex="1"></mx:Tree> 

Répondre

Questions connexes