Comunidad de diseño web y desarrollo en internet online

Combos Dependientes (Flex)

Citar            
MensajeEscrito el 13 Ago 2007 05:23 pm
Hola:
Estoy intentando hacer unos combos dependientes, pero tengo unos problemillas, al parecer la aplicación comienza ejecutandose bien, pero después empieza a fallar con solo algunos elementos identificados, el código con el que estoy trabajando es el siguiente:

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="marcas.send()">
   <mx:Script>
      <![CDATA[
         import mx.collections.ArrayCollection;
         import mx.rpc.events.ResultEvent;
         [Bindable]
         private var marca_ac:ArrayCollection;
         [Bindable]
         private var modelo_ac:ArrayCollection;
                  
         private function marcas_r(event:ResultEvent):void {
            marca_ac = event.result.marcas.marca;
            modelos.send();
         }
         private function modelos_r(event:ResultEvent):void {
            modelo_ac = event.result.modelos.modelo;
         }
      ]]>
   </mx:Script>
   <mx:HTTPService id="marcas" 
      url="http://localhost/flex/marcas.php" 
      useProxy="false"
      result="marcas_r(event)">    
   </mx:HTTPService>
   <mx:HTTPService id="modelos" 
      url="http://localhost/flex/modelos.php" 
      useProxy="false"
      method="GET"
      result="modelos_r(event)">
      <mx:request xmlns="">
         <id_marca>{marca_cb.selectedItem.id_marca}</id_marca>
      </mx:request>
   </mx:HTTPService>
   <mx:Panel x="10" y="10" width="517" height="440" layout="absolute" title="data a combo">
      <mx:ComboBox id="marca_cb" dataProvider="{marca_ac}" labelField="nombre" change="modelos.send()" x="10" y="10" width="150" height="20"/>
      <mx:ComboBox id="modelo_cb" dataProvider="{modelo_ac}" labelField="nombre"  x="10" y="38" width="150" height="20"/>
   </mx:Panel>
</mx:Application>

Cuando selecciono los elementos que me dan problemas, arroja el siguiente error:

Código :

TypeError: Error #1034: Error de conversión forzada: no se puede convertir mx.utils::ObjectProxy@5559601 en mx.collections.ArrayCollection.
   at CombosDependientes/::modelos_r()
   at CombosDependientes/__modelos_result()
   at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
   at flash.events::EventDispatcher/dispatchEvent()
   at mx.rpc.http.mxml::HTTPService/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()
   at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()
   at mx.rpc::Responder/result()
   at mx.rpc::AsyncRequest/acknowledge()
   at ::DirectHTTPMessageResponder/completeHandler()
   at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
   at flash.events::EventDispatcher/dispatchEvent()
   at flash.net::URLLoader/flash.net:URLLoader::onComplete()

Como lo comentaba antes, solo sucede con algunos elementos, pero lo raro, es que todas las marcas tienen un modelo en la base de datos.
Desde ya, gracias! ^^

Texto agregado como a la 1:28 PM GTM-6
Las cuatro marcas que mandan el error, solo tienen un (1) modelo, quiero pensar que eso esta afectando el resultado que recoge Flex, pues si veo los XML generados por PHP en el navegador, todo pinta muy bien.
Todavía no se como corregir eso. :crap:

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

firefox
Citar            
MensajeEscrito el 13 Ago 2007 07:02 pm
Pues navegando por internet encontré esto:
http://www.mail-archive.com/[email protected]/msg66862.html

Dicen que el Motor de Flash ignora los nodos cuando encuentra uno solo :shock:

Así que me tuve que implementar una solución (bastante tonta a mi forma de ver, pero alguien me dijo alguna vez: "Hazle como sea, pero que funcione") la cual consta en meter en PHP un nodo que diga: "Seleccione un modelo" :roll: , con eso lograré que siempre sean cuando menos dos (2) nodos y el motor de flash no los ignore :roll:

Saludox!!!

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

firefox
Citar            
MensajeEscrito el 14 Ago 2007 02:32 am
hola que tal master_of_puppetz!!! al parecer flex te esta enviando de regreso un tipo de dato al cual le has asignado otro distinto, he aqui es donde puede usarse el caracter comodín (*) este si es un caso en el que puede usarse, asi lo puedes tratar tanto como ArrayCollection como Proxy, y no como querian implementarlo en otro post.... si me lo permites master_of_puppetz te sugiero usar el remoteObject, ya que es mucho más fácil de implementar y bastante menos codigo

saludos!!!

Por andres_santos

236 de clabLevel



 

opera
Citar            
MensajeEscrito el 14 Ago 2007 02:41 am
nop, no me esta enviando un tipo de dato distinto, en el link que puse, dice que cuando encuentra un solo nodo en en XML, simplemente lo ignora y fue lo que me pasaba, pero ya lo solucione, Gracias de todos modos ;)

Saludox!!!

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

firefox
Citar            
MensajeEscrito el 14 Ago 2007 02:24 pm
Prueba así:

Código :

  private function marcas_r(event:ResultEvent):void {
            marca_ac = event.result.marcas.marca as ArrayCollection;
            modelos.send();
         }
         private function modelos_r(event:ResultEvent):void {
            modelo_ac = event.result.modelos.modelo as ArrayCollection;
         }

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 14 Ago 2007 03:31 pm

Zah escribió:

Prueba así:

Código :

  private function marcas_r(event:ResultEvent):void {
            marca_ac = event.result.marcas.marca as ArrayCollection;
            modelos.send();
         }
         private function modelos_r(event:ResultEvent):void {
            modelo_ac = event.result.modelos.modelo as ArrayCollection;
         }

probado pero nop!, el problema radica en el XML que genera PHP, por que como solo es generado un solo nodo, en el link que puse más arriba, dice que de alguna forma el motor de Flash ignora los nodos únicos.

Gracias de todos modos! ^^

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

firefox

 

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