Comunidad de diseño web y desarrollo en internet online

problemas actualizar datos combobox dinamico en flex 3.5

Citar            
MensajeEscrito el 14 Jul 2010 11:25 pm
hola tengo el siguiente problema tengo 2 combobox segun lo que elijan en el primero sera lo q aparesca en el segundo
como aparece en la siguiente imagen.

bueno al eligir por primera vez no ahy problema la opcion q sea pero cuando despues de ya a ver elegido una vez y cambias la opcion del combobox uno el segundo combobox como que se marea y no actualiza los datos aparece de la siguiente forma

y para q aparesca bien los datos tienes como que precionar los datos erronios y recion lo corrige con los datos como aparece en la siguiente foto

me pueden decir como corregir este error
les dejo aqui el codigo del combobox y el xml q recive desde httpservices
codigo flex

Código ActionScript :

protected function comLugarEvento_changeHandler(event:ListEvent):void
         {
            lugares.send();
         }
         protected function lugares_faultHandler(event:FaultEvent):void
         {
            Alert.show(event.message.toString(),"error");
         }

         protected function lugares_resultHandler(event:ResultEvent):void
         {
            var xmlRespuesta:XMLList=new XMLList(event.result);
            xml= new XML(xmlRespuesta[xmlRespuesta.length()-1]);

            if(xml.respuesta==0){
               comLugaresEvento.dataProvider="";
               Alert.show("no a ingresado datos intente nuevamente");
            }else if(xml.respuesta==1){
               comLugaresEvento.dataProvider="";
               Alert.show("no se han encontrado considencias intente nuevamente");
            }else if(xml.respuesta==2){
               comLugaresEvento.dataProvider=xml.lugar.(tipo==comLugarEvento.selectedItem.data);
               comLugaresEvento.enabled=true;
               comLugaresEvento.labelField="nombre";
            }else if(xml.respuesta==3){
               Alert.show("Inactividad vuelva iniciar seccion");
               Application.application.currentState="";
               
            }else{
               Alert.show("Error de conexion cone el servidor");
         
            }
         }

.....

Código Flex :

<mx:HTTPService id="lugares" url="http://{Url}/onemi/servicios/lugares/verLugares.php" useProxy="false" method="POST" showBusyCursor="true" fault="lugares_faultHandler(event)" result="lugares_resultHandler(event)" resultFormat="xml">
      <mx:request xmlns="">
         <usuarioSeccion>
            {usuarioSeccion}
         </usuarioSeccion>
         <token>
            {token}
         </token>
      </mx:request>
   </mx:HTTPService>
<mx:ComboBox x="90" y="66" width="199" id="comLugarEvento" change="comLugarEvento_changeHandler(event)">
           <mx:ArrayCollection>
               <mx:Object label="" data="0"/>
                      <mx:Object label="Definir Region..." data="1"/>
                      <mx:Object label="Definir Provincia..." data="2"/>
                      <mx:Object label="Definir Comuna..." data="3"/>
              </mx:ArrayCollection>
      </mx:ComboBox>
<mx:ComboBox x="312" y="66" id="comLugaresEvento" enabled="false"></mx:ComboBox>

respuesta xml

Código XML :

<resultado>
<lugar>
<id>1</id>
<nombre>V Region</nombre>
<tipo>1</tipo>
</lugar>
<lugar>
<id>2</id>
<nombre>Provincia Valparaiso</nombre>
<tipo>2</tipo>
</lugar>
<lugar>
<id>5</id>
<nombre>Provincia San Antonio</nombre>
<tipo>2</tipo>
</lugar>
<lugar>
<id>6</id>
<nombre>Valparaiso</nombre>
<tipo>3</tipo>
</lugar>
<lugar>
<id>7</id>
<nombre>Concon</nombre>
<tipo>3</tipo>
</lugar>
<lugar>
<id>8</id>
<nombre>Quintero</nombre>
<tipo>3</tipo>
</lugar>
<lugar>
<id>9</id>
<nombre>CasaBlanca</nombre>
<tipo>3</tipo>
</lugar>
<lugar>
<id>10</id>
<nombre>Juan Fernandez</nombre>
<tipo>3</tipo>
</lugar>

...

no lo puse completo pq es muy largo espero q me puedan ayudar saludos

Por anikilatorbeta

42 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Jul 2010 02:28 am
lo mas facil en este caso es aplicar un debug sobre flex para ver que propiedad te esta fallando
puedes hacer el dedug y encontrar exactamente los objectos que se encuentra y que funcion esta llevando
a cabo cada elemento. Una buena opcion tambien extra el flashtracer para firefox o Monsterdebugg

lo segundo es que utilices funciones close de combobox para realizar lo que quieres y tambien
selectemitem si estas trabajando con objectos o bien utilizar los render para darle mas funciones
como almacenar ciertos parametros.

Suerte gueon.

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Jul 2010 03:01 am
puedes darme un ejemplo de como tu solucionarias esto?

Por anikilatorbeta

42 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Jul 2010 11:08 pm
Por ejemplo ya sea objecto o xml deberas crear objectos que te permitan encapsular dicha información , por ejemplo

objectoUno >>>propiedad1,propiedad2
objectoDos>>>>propiedad3,propiedad4


Supongamos que el combo uno se llena con elementos de objectoUno y un segundo combobox con objectosDos
segun la propiedad2 del objectoUno, entonces:

<mx:combobox id="datosUno" dataprovider="midata" close="llenarDos( datosUnos.seleteditem as objectoUno)".....
<mx:combobox id="datosDos" dataprovider="midata" close="llenarDos( datosUnos.seleteditem as objectoUno)".....



supongamos que la funcion llenarDos llamara a una intancia remota (puedes ser tambien http o un webser..en fin)
muchas maneras un solo objectivo.

Entonces en tu spript flex tendras :
.......
public function llenarDos(osoregalon:objectoUno) {
....//en ese punto llamaras a tu funcion que estara en un backend,webservice o cualquiera otra guea
this.datosDos.dataprovider=objectoRemoto.devolermeDatos(objectoUno)
.....................
}

Esta función representa el cierre del combo box , cuando se cierre tomara dicho objecto y lo pasara a la funcion
remota, entonces ahora la funcion remota....


funcionRemota obtenerTodosLosGueonesObjectosDos(venidodeflex:objectoUno) {
.............................
if(venidodeflex.propiedad1(es igual, es mayor, cumple x condicion, ...lo que tu quieras)
......llenar datos y devolver arreglos de objectosDos...
.......


Es asi como obtendras los objectos. mas facil echale agua

Por xcom

Claber

530 de clabLevel



 

firefox

 

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