que propiedades propiedad grow espacio entre ejemplo contenedor columnas flex actionscript-3 actionscript

propiedades - ¿Cómo recorro los objetos resultantes en Flex?



flex propiedad (3)

Tengo problemas al alternar manualmente los datos xml que se reciben a través de una llamada HTTPService, el xml se ve así:

<DataTable> <Row> <text>foo</text> </Row> <Row> <text>bar</text> </Row> </DataTable>

Cuando se desencadena el evento de resultado webservie, hago algo como esto:

for(var i:int=0;i<event.result.DataTable.Row.length;i++) { if(event.result.DataTable.Row[i].text == "foo") mx.controls.Alert.show(''foo found!''); }

Este código funciona luego hay más de 1 nodos de "Fila" devueltos, sin embargo, parece que si solo hay un nodo "Fila", entonces el objeto event.DataTable.Row no es un error y el código se rompe posteriormente.

¿Cuál es la forma correcta de recorrer el objeto resultado HTTPService? ¿Debo convertirlo a algún tipo de colección XMLList o a ArrayCollection? He intentado configurar el resultFormat en "e4x" y eso aún tiene que solucionar el problema ...

Gracias


El problema radica en esta afirmación

event.result.DataTable.Row.length

length no es una propiedad de XMLList , sino un método:

event.result.DataTable.Row.length()

es confuso, pero así son las cosas.

Además: en realidad, lo más seguro es utilizar siempre un bucle for each bucle al iterar sobre XMLList s, de esa manera nunca cometerá un error, tendrá menos código y será más fácil de leer:

for each ( var node : XML in event.result.DataTable.Row )


Lo almacenaría en un objeto Xml y luego usaría sus métodos para buscar el valor del nodo que necesita.

var returnedXml:Xml = new Xml(event.result.toString());


Row no es una matriz a menos que haya múltiples elementos de Fila. Esto es molesto. Tienes que hacer algo como esto, pero no he escrito AS3 desde hace un tiempo, así que me olvido de si existe una función.

if (exists(event.result.DataTable) && exists(event.result.DataTable.Row)){ if (exists(event.result.DataTable.Row.length)) { for(var i:int=0;i<event.result.DataTable.Row.length;i++) { if (exists(event.result.DataTable.Row[i].text) && "foo" == event.result.DataTable.Row[i].text) mx.controls.Alert.show(''foo found!''); } } if (exists(event.result.DataTable.Row.text) && "foo" == event.result.DataTable.Row.text) mx.controls.Alert.show(''foo found!''); }