Comunidad de diseño web y desarrollo en internet online

TypeError: Error #1034: Error de conversión forzada

Citar            
MensajeEscrito el 10 Jun 2009 08:17 am
Buenos días, recibo un xml del siguiente tipo

<list>
<item>objeto1</item>
</list>

Y al ponerlo en una list de la forma siguiente (tras un httpservice):

var listArray:ArrayCollection = event.result.list.item;
myList.dataProvider = listArray;

Me da el error "TypeError: Error #1034: Error de conversión forzada "

He leido por ahí que se solventa convirtiendolo el resultado a Array, de la siguiente manera:

var listArray:ArrayCollection = new ArrayCollection (ArrayUtil.toArray(event.result.list.item));
myList.dataProvider = listArray;

El problema ahora es que si tengo más de un item:

<list>
<item>Objeto1</item>
<item>Objeto2</item>
</list>

Me aparece en el mx:List como si solo hubiera un objeto que es: Objeto1,Objeto2 :S

Por favor, me estoy volviendo loco... una ayuda please!!!

Gracias por adelantado

Por grandemigre

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Jun 2009 12:32 pm
En el método toArray de la clase ArrayUtil hay que estar seguro que el objeto que conviertas a Array lo sea realmente (no en este caso, ya que es un XMLList) de lo contrario te creará un arreglo de un sólo elemento con tu objeto que es lo que te está pasando.

Una forma de resolverlo es que crees una función que te convierta tu XMLList a un ArrayCollection, una solución podría ser esta:

Código ActionScript :

function convertToArray(xml:XMLList):ArrayCollection{

    var ret:ArrayCollection = new ArrayCollection();
    var obj:Object;

    for each(var item:XML in xml.item){
   
        obj = new Object();
        obj.item = item.toString();
        ret.addItem(obj);
   
    }

    return ret;

}


De esta manera podrías decirle a tu List que el dataProvider es:

Código ActionScript :

myList.dataProvider = convertToArray(event.result.list.item);


Una forma que te evitas todo esto es utilizando como dataProvider un XMLListCollection en vez de un ArrayCollection, míralo en la ayuda para que veas sus propiedades y métodos.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 10 Jun 2009 01:46 pm
Pues sigo igual :(

El primer error: typeError lo solvento así:

Código ActionScript :

myList.dataProvider = convertToArray(event.result.list.item as XMLList);


Pero despues tengo otro error "No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo." en:

Código ActionScript :

    for each(var item:XML in xml.item){   


Tambien lo intento hacer por XMLListCollection de modo similar al principio y no me aparece nada como resultado :S

Código ActionScript :

var lista:XMLListCollection = new XMLListCollection(event.result.list.item as XMLList);
myList.dataProvider = lista;


Siento ser tan novato... me estoy volviendo loco :S

Por grandemigre

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Jun 2009 03:24 pm
Perdona, no tienes que volver acceder al nodo item porque ya accediste a él cuando lo enviaste, cambia esa línea por:

Código ActionScript :

for each(var item:XML in xml){ 

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox

 

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