Comunidad de diseño web y desarrollo en internet online

llenar un tree

Citar            
MensajeEscrito el 23 Feb 2010 05:56 pm
que tal compañeros de este maravilloso foro de FLEX

tengo un problema a la hora de llenar un tree lo que quiero hacer es llenarlo con contenido de dos tablas
por ejemplo tengo la tabla categorias y la tabla cursos tienen la siguiente estructura:
categorias
id_categoria
nombre_categoria

cursos
id_curso
id_categoria
nombre_curso
descripcion_curso

quiero que mi tree se llene con el nombre de la categoria como nodo padre y como nodos hijos el nombre del curso que tenga la id de la categoria.. les agradesco de antemano sus respuestas...

Por Shadonwk

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Feb 2010 06:36 pm

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

safari
Citar            
MensajeEscrito el 23 Feb 2010 07:13 pm
gracias master_of_ pero el detalle es que quiero cargar el tree directamente desde un array y no desde un xml..

Por Shadonwk

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Feb 2010 03:32 am
que paso no hay respuestas??? :'(

Por Shadonwk

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Feb 2010 05:28 am
Hola colega, decirte quiero que la fuente de datos de la cual vas a proveer al tree no importa, esta puede ser de un xml, de un arrayCollection o incluso de un array, lo que pasa es que este ultimo tienes que tratarlo como un arreglo de objetos, o sea:

Código ActionScript :

var arr:Array = [{"nombre":"Fulano", "edad":21}, {"aki pones el objeto dos ..."}];


y luego lo asignas como dataProvider al tree. La verdad es que no lo he provado en un tree, pero lo hice para un comboBox, un list y un dataGrid y en todos estos me ha funcionado.

Por pmolina88

74 de clabLevel



Genero:Masculino  

Ingeniero en Sistemas

firefox
Citar            
MensajeEscrito el 25 Feb 2010 04:38 pm
bien entiendo pero cula seria el codigo php para llenar ese arreglo??

Por Shadonwk

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Feb 2010 04:17 am
Bueno en ese caso creo que la cosa es más facil, veras, todo lo que tienes que hacer es usar la clase XMLSerializer.php de PEAR, clase que vas a importar en tu proyecto PHP, sería algo como esto:

Código PHP :

$arr = array(
   array('id' => 1, 'nombre' => 'Nombre 1', 'edad' => 21),
   array('id' => 2, 'nombre' => 'Nombre 2', 'edad' => 45)
);

require_once 'XmlSerializer.class.php';

$obj = new XmlSerializer();
$obj->serialize($arr);


Ahora, imagina que la variable $arr es la matriz que devuelve el resultado de la consulta a la Base de Datos. Esto produce en esta pagina un xml.

Posteriormente en Flex usas la clase HTTPService y le pasa como URL la direccion de la pagina que hicimos anteriormente la cual mostraba un xml.

Luego en el handler ResultEvent del objeto de la clase HTTPService capturamos el resultado, te voy a presentar una clase que hace poco realicé y espero que te sirva

Código ActionScript :

package clases
{
   import flash.events.Event;
   
   import mx.controls.Alert;
   import mx.rpc.events.FaultEvent;
   import mx.rpc.events.InvokeEvent;
   import mx.rpc.events.ResultEvent;
   import mx.rpc.http.mxml.HTTPService;
   
   public class Conexion
   {
      private var service:HTTPService;
      
      public function Conexion(url:String, funcResult:Function)
      {
         this.service = new HTTPService();
         this.service.method = "POST";
         this.service.url = url;
         this.service.useProxy = false;
         
         //cuando se hace la consulta se cancelan las existentes.
         this.service.concurrency = "multiple";
         
         //devolver el resultado de la consulta en el formato XML
         this.service.resultFormat = "e4x";
         
         this.service.addEventListener(ResultEvent.RESULT, funcResult);
         this.service.addEventListener(FaultEvent.FAULT, handlerFault);
         this.service.addEventListener(InvokeEvent.INVOKE, handlerInvoke);
      }
      
      //Modificar el Listener del Evento RESULT
      public function set funcResult(param:Function):void{
         this.service.addEventListener(ResultEvent.RESULT, param);
      }
      
      /**
       * Modifica la url hacia la que se va a hacer el envio.
       */
      public function set url(param:String):void{
         this.service.url = param;
      }
      
      public function get url():String{
         return this.service.url;
      }
      
      public function send(params:Object = null):void{
         //enviar los parametros
         this.service.request = params;
         this.service.send();
      }
      
      //funcion que se invoca cuando se reciben los resultados.
      private function handlerResult(e:ResultEvent):void{
         //Alert.show(e.result.toString());
      }
      
      /**
       * Se invoca cuando falla la conexion
       */
      private function handlerFault(e:FaultEvent):void{
         Alert.show(e.fault.faultString, "Error en el envío");
      }
      
      /**
       * Se dispara cuando se invova el envio
       */
      private function handlerInvoke(e:InvokeEvent):void{
         //Alert.show("Se invocó", "Invocación");
      }
            
   }
}

Por pmolina88

74 de clabLevel



Genero:Masculino  

Ingeniero en Sistemas

firefox
Citar            
MensajeEscrito el 26 Feb 2010 09:50 pm
excelente solucion gracias de momento ya lo solucione generando el xml desde el php pero suena interezante la clase XMLSerializer.php que mencionas le voy a echar un ojo gracias..

Por Shadonwk

50 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Feb 2010 11:21 pm
La clase XMLSerializar de PEAR lo que hace es crearte ella misma el xml, tu solamente le pasas por parametro la matris que quieres serializar.

Mira un ejemplo y veras que es muy util.

Por pmolina88

74 de clabLevel



Genero:Masculino  

Ingeniero en Sistemas

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.