Comunidad de diseño web y desarrollo en internet online

recoger valor al cambiar de opcion

Citar            
MensajeEscrito el 08 Oct 2008 10:40 am
hola,
haber si me hechais una mano pq me estoy volviendo :shock:
tengo un combobox cargado con los datos de una consulta. Utilizo AMFPHP y me carga correctamente los datos en el comboBox. El problema es que al cambiar de opcion en el combo quiero que me devuelva el valor de uno de los campos cargados. Bueno os pongo el codigo:

Código :

var gateway:String = "http://localhost/amfphp/gateway.php";
var connection:NetConnection;
var responder:Responder;

responder = new Responder(resultados, fallos);
connection = new NetConnection;
connection.connect(gateway);

connection.call("oxkar.Consultas.consultando", responder);  
function resultados(result:Object):void {
    var datos:Array = new Array();
    for (var i:Number = 0; i < result.serverInfo.initialData.length; i++) {    
         datos.push({label: result.serverInfo.initialData[i], data:i});
    }
    var dp:DataProvider = new DataProvider(datos);    
    miCombo.dataProvider = dp;
}
            
miCombo.addEventListener(Event.CHANGE, alCambiar);
function alCambiar(e:Event):void{
   trace("fila seleccionada:  "+e.target.getItemAt(e.target.selectedIndex).nombre); //NO FUNCIONA SALIDA: fila seleccionada: undefined
      //trace("fila seleccionada:  " + miCombo.getItemAt(miCombo.selectedIndex).id); //asi tampoco funciona
}



siempre he utilizado: e.target.getItemAt(e.target.selectedIndex).nombre en AS2 y funcionaba perfectamente.

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2008 11:19 am
Hola...
Prueba a cambiar esta fila

Código :

trace("fila seleccionada:  "+e.target.getItemAt(e.target.selectedIndex).nombre);

por esto

Código :

trace("fila seleccionada:  "+e.currentTarget.value);

Saludos

Por willow001

52 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Oct 2008 11:32 am
hola, gracias por responder
ahora me devuelde el indice de la fila seleccionada en el combobox.
Pero lo que necesito es el contenido que muestra el combobox.

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2008 11:35 am
es decir el combobox muestra:
1, pepito
2, juanito
3, oscar

que corresponde a los dos campos cargados de la BD
Yo quiero que al seleccionar p.e. la primera opcion muestre -> fila seleccionada: pepito
con el codigo que tu me pusiste muestra --> fila seleccionada: 0

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2008 12:01 pm
Cambia por

trace("fila seleccionada: "+e.currentTarget.label);

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Oct 2008 12:14 pm
Hola solisarg,

al poner tu codigo me tira el siguiente error:

ReferenceError: Error #1069: No se encontró la propiedad label en fl.controls.ComboBox y no hay ningún valor predeterminado.
at Combo_fla::MainTimeline/alCambiar()

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2008 12:26 pm
Prueba

e.target.selectedIndex.label

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Oct 2008 01:01 pm
trace("fila seleccionada: "+e.target.selectedIndex.label);

me sale el siguiente error:

ReferenceError: Error #1069: No se encontró la propiedad label en Number y no hay ningún valor predeterminado.
at Combo_fla::MainTimeline/alCambiar()

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2008 01:49 pm
Yep, es item no index

trace("fila seleccionada: "+e.target.selectedItem.label);

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Oct 2008 02:46 pm
OK, ahora si

Esto me devuelve --> 1, pepito

Y si quisiera que me devolviera solo el 1 que es el campo ID de la BD?

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2008 03:13 pm
Seria

String(e.target.selectedItem.label).split(",")[0]

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Oct 2008 03:29 pm
Antes en AS2 cuando queria mostrar solo 1 campo de la BD pero que me mantuviera los datos de todos los campos

miCombo.labelField = "nombre"; //mostramos solo el campo nombre en el comboBox

despues al pinchar sobre el combo yo podia hacer un trace de otro campo por ejemplo del campo ID

pero en AS3 si utilizo labelField no me muestra el contenido de los campos, aparecen tantas filas como registros pero en blanco. Si pincho sobre alguna opcion del combo este me muestra --> 1 . Es decir lo datos si que estan pero no los muestra.
el codigo lo pongo asi:

...
miCombo.dataProvider = dp;
miCombo.labelField = "id"; //mostramos solo el campo nombre
...

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2008 03:33 pm
En este loop tienes la opcion de pasarle lo que quieras a tu combo:

datos.push({label: result.serverInfo.initialData[i], data:i});

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Oct 2008 03:42 pm
Sí, pero yo puedo tener como datos en mi combo ID y NOMBRE por cada item Y que solo me muestre en el combo el NOMBRE?
Lo que quiero es que al pulsar sobre un item del combo que coja el ID y muestre en otro componente una consulta con los datos relacionados. Por eso quiero guardar el ID pero que a su vez no lo muestre en el combobox.

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2008 03:59 pm
A ver, recibes un paquete de datos X de su servidor, supongamos que quiero mostrar el campo Nombre en la etiqueta y el campo ID en el data, seria

datos.push({label: result.serverInfo.initialData[i].Nombre, data:result.serverInfo.initialData[i].Id});

En tu clase de Remoting, pasa esa info en el paquete que devuelves (para nombres de campo se usan arrays conn Key)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Oct 2008 04:18 pm
De la forma que me pusiste no me carga ningun dato en el comboBox y no me tira ningun error, simplemente no carga datos. Se muestran 2 items en el combobox pero vacios. Tengo el código asi:

for (var i:Number = 0; i < result.serverInfo.initialData.length; i++) {
//datos.push({label: result.serverInfo.initialData[i], data:i}); //MUESTRA DATOS
datos.push({label: result.serverInfo.initialData[i].nombre, data: result.serverInfo.initialData[i].id}); //NO MUESTRA DATOS
}

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2008 04:24 pm
Parece que estamos ante un ping-pong corta y pega

En tu clase de Remoting, pasa esa info en el paquete que devuelves (para nombres de campo se usan arrays conn Key)


¿Tienes idea de que te hablo? ¿Has hecho tu las clases de Remoting?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Oct 2008 04:32 pm
si te refieres a las clases de php, a los servicios de amfphp:

class Consultas{
function Consultas(){
mysql_connect("localhost", "root", "") or die('No se pudo conectar a la BD porque: '.mysql_error());
mysql_select_db("amuebla");
}
function consultando(){
return mysql_query("SELECT id, nombre FROM usuario");
}
}

estoy utilizando AS3 y AMFPHP 1.9.

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2008 05:41 pm
Bien, ahora usa un sniffer para analizar la estructura que te esta devolviendo, te sera muy util en tu toolbox: http://www.charlesproxy.com

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Oct 2008 07:45 pm
Voy a ver como funciona ese programa. Y te cuento. Gracias.

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Oct 2008 08:49 am
Hola de nuevo. He estado probando este programa y el resultado es:

datos.push({label: result.serverInfo.initialData[i], data:i});



datos.push({label: result.serverInfo.initialData[i].nombre, data: result.serverInfo.initialData[i].id});


Aparentemente devuelve lo mismo las 2 opciones. Pero con las 2ª opcion no muestra nada el en el combobox :shock:

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Oct 2008 09:19 am
Sip, no te devuelve los nombres de las columnas, tendrás que accederlos como index. Entonces solo captura el label

tuCombo.selectedItem.label

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Oct 2008 09:48 am
Exactamente que tengo que poner en este codigo, pq me estoy liando:


Código :

connection.call("oxkar.Consultas.consultando", responder);  
function resultados(result:Object):void {
    var datos:Array = new Array();
    for (var i:Number = 0; i < result.serverInfo.initialData.length; i++) {    
        datos.push({label: result.serverInfo.initialData[i], data:i});
   //datos.push({label: result.serverInfo.initialData[i].nombre, data: result.serverInfo.initialData[i].id});
    }
    var dp:DataProvider = new DataProvider(datos);    
    miCombo.dataProvider = dp;
}
            
miCombo.addEventListener(Event.CHANGE, alCambiar);
function alCambiar(e:Event):void{
   trace("fila seleccionada: "+e.target.selectedItem.label); //SALIDA: 1,o
   trace("fila seleccionada: "+String(e.target.selectedItem.label).split(",")[0]);  //SALIDA: 1
}

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Oct 2008 10:31 am
Tu primer trace ya te está devolviendo las etiquetas. ¿Cual es el problema?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Oct 2008 11:00 am
Lo que quiero es que el combo solo muestre solo el campo NOMBRE y no el ID.
Y que al pulsar en una opcion del combobox me devuelva el ID.

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Oct 2008 11:18 am
Pues si miras la estructura que te muestra Charles haces:

Código ActionScript :

for (var i:Number = 0; i < result.serverInfo.initialData.length; i++) {    
         datos.push({label: result.serverInfo.initialData[i][1], data:result.serverInfo.initialData[i][0]});
    }


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Oct 2008 11:41 am
ahora comprendo accedo por indices que es lo que me esta devolviendo CHARLES.
pero pq me devuelve indices y no el nombre del campo?
otra pregunta estas cosas que hago en Flash con AS3 en Flex es más sencillo?

Nuevamente me resuelves mis problemas.
Eres un genio. Gracias por tu tiempo.

Por oscarlosan

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Oct 2008 11:52 am
Para los nombres de columna prueba haciendo

$result = mysql_query("select .....");
return myql_fetch_array($result);

Mira en el Charles como es la estructura que te devuelve.
La gran ventaja de Flex es el sistema de bindings, que bien utilizado ahorra mucho code

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Oct 2008 04:00 pm
gracias Jorge.

Por oscarlosan

73 de clabLevel



 

firefox

 

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