Comunidad de diseño web y desarrollo en internet online

COMO Guardar Httpservice result en ArrayCollection???

Citar            
MensajeEscrito el 02 Ene 2011 09:05 am
Bueno a algunos les puede parecer simple mi duda, pero XD si pueden ayudarme seria de mucho alivio, veran quiero tomar el resultado de un HTTPservice (<mx:HTTPservice id="consulta" url ="lista.php"/>) y guardarlos en un arraycollection, para posteriormente explotarlo en mi aplicacion...

E investigado como pasar un datagrid a un arraycollection, pero aun no logro completarlo, cuando no me sale error, la aplicacion simplemente no hace nada.

DE ANTEMANO MUCHAS GRACIAS...

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 02 Ene 2011 09:59 am
BuenAS:

Si no has cambiado nada, por defecto HTTPservice te devuelve un ArrayCollection como resultado. En

consulta.lastResult.[aquí deberías colocar la estructura del xml recibido]

debes tener un ArrayCollection listo para asignarlo al dataProvider de tu componente DataGrid.

Si has especificado en el HTTPservice un controlador para el evento ResultEvent.RESULT, en dicho controlador, a través de

event.result.[aquí deberías colocar la estructura del xml recibido]

también tienes el ArrayCollection.

Uno de los problemas que suele aparecer es que la estructura del ArrayCollection NO coincida con la del Datagrid. Asegurate que el valor del dataField de cada columna coincide con las distintos campos que aparecen en el ArrayCollection y que tengas tantos campos como columnas. Para esto suele ser interesante crear un pto de interrupción y comprobar que TODO va bien, rellenandose correctamente cada columna.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 02 Ene 2011 11:03 am
GRACIAS fue de gran ayuda, evidentemente ya puedo listar los datos del HTTPSERIVES
Muestro codigo:

public function llenar(event:ResultEvent):void{
if (listar.lastResult..nodo == null){
return; }

if (listar.lastResult..nodo is ArrayCollection){
datos=listar.lastResult..nodo; }

else if (listar.lastResult..nodo ){
datos = new ArrayCollection([listar.lastResult..nodo]);}
}
Ahora con la ayuda que me diste, logre capturar el httpservice, me lo lista como 1 registro, ejemplo si tengo dentro de nodos una etiqueta <nombre> que mediante una consulta lista todos los que existen en la tabla, a todos los registros los hace uno solo de la siguiente manera
-----------------------------------
<nombre>jose</nombre>
<nombre>juan</nombre>
<nombre>pablo</nombre>
------------------------------------


cuando si lo asigno directamente el httpservice a el datagrid lo asigna como 3 registros

-----------------------------------
<nombre>jose</nombre>
------------------------------------
<nombre>juan</nombre>
------------------------------------
<nombre>pablo</nombre>
------------------------------------

alguna ayuda extra profavor.... y de nuevo GRACIAS POR TU AYUDA, ME ACLARO MUCHO COMO TOMAR EL HTTPSERVICE A UN ARRAY, espero y si tienes tiempo me ayudes con esto XD...

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 02 Ene 2011 11:04 am
Olvide comentarte, el codigo que apunte es para saber si el httpservice esta mandando un resultado, para esto en donde se hace el httpservice, mando a llamar la funcion llenar por medio del result (result="llenar(event);")..

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 02 Ene 2011 11:16 am
<root>
<?php
include ("conexion.php");
$sql = "SELECT * FROM LISTA";
$result = mysql_query($sql,$conexion);
while($fila = mysql_fetch_object($result))
{
echo "<nodo>";
$nombre = $fila->nombre;
echo "<nombre>".$nombre."</nombre>";
echo "</nodo>";
}
mysql_close ($conexion);
?>
</root>

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 02 Ene 2011 11:29 am

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 02 Ene 2011 11:59 am
BuenAS:

Echa un vistazo a este ejemplo:
DataGrid HTTPService
Cuando estés en el ejemplo pulsa botón derecho y elige "Ver código fuente" (en la esquina inferior izquierda tienes un enlace para descargar el código).

El mayor problema que suele aparecer en estos casos, como comentaba, es que el ArrayCollection que te devuelve el HTTPService no tenga una estructura adecuada al dataProvider de tu DataGrid. En estos casos tienes varias formas de afrontarlo:

1. Como he hecho yo, he definido la propiedad "dataField" de cada columna de mi DataGrid con el nombre de los distintos campos que me llegan (en mi caso: nombre, apellido, dni). En este caso no tienes que tocar el ArrayCollection, ya que lo que adaptas es el DataGrid.

2. Crearte un ArrayCollection nuevo y le das un array de objetos con los campos que tiene tu DataGrid, llenandolos con el ArrayCollection que te llega del HTTPService. En este caso, lo que "adaptas", es el ArrayCollection.

3. Si tienes posibilidad de modificar la respuesta del HTTPService (por que lo estés desarrollando tú también), adapta la respuesta a la estructura del DataGrid.

Lo que más cómodo/rápido te resulte ;)

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 02 Ene 2011 09:09 pm
Bueno, mi necesidad de guardar el httpservice en un array es para poder crear una grid de alivepdf, por eso me interesa adaptar el httpservice al new array:

public function llenar(event:ResultEvent):void{
if (listar.lastResult..nodo == null){
return; }

if (listar.lastResult..nodo is ArrayCollection){
datos=listar.lastResult..nodo; }

else if (listar.lastResult..nodo ){//SIMPRE ME LO MANDA COMO SI FUERA UNO
datos = new ArrayCollection([listar.lastResult..nodo]);}
}

Creo que me explique mal, uso el datagrid solo para ver los datos del array, lo que enrealidad necesit es poder manipular el array, el problema es que siempre me lo manda como si fuera 1, pareciendo ser una string, cuando uso el trace o mando un alert si me aparece con la estructura tipo arbol xml:
<nodo>
<nom>
juan
</nom>
</nodo>
<nodo>
<nom>
pedro
</nom>
</nodo>
<nodo>
<nom>
pablo
</nom>
</nodo>

que puedo hacer para que el array los tome como los muestra el alert. y no los guarde como 1 solo registro...

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 02 Ene 2011 11:25 pm
ME RESPONDO PERO NO SIN AGRADECE PRIMERO A LUKANICOS, que mostro su apoyo...

Bueno la solucion es la siguiente:
1.- creamos el arraycollection
[Bindable] public var datos:ArrayCollection = new ArrayCollection();
2.- Creamos la funcion para tomar los datos del Httpservice mediante el result
private function copiarArray(event:ResultEvent):void
{
3.- Creamos una variable tipo XMLListCollection y agregamos el valor del result hecho a el Httpservice
var xmlList:XMLListCollection= new XMLListCollection(event.result.nodo);
4.- Guardamos Objetos del list en un arreglo
var resultArray:Array = xmlList.toArray();
5.- Despues asignamos el array a nuestro array collection.
datos =new ArrayCollection(resultArray);
}

Se que es un poco rebuscado pero a mi me funciona, espero poder ayudar mas adelante asi como me ayudaron, gracias gente

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

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