Общее правило, которому я следую, когда дело доходит до подобных проблем, - делать что-то вроде этого (просто чтобы убедиться, что вы получаете все, что искали):
import flash.utils.getQualifiedClassName;
// As a general rule, I don't find it the best idea to access an object in
// an IList (ArrayCollection, XMLListCollection, et al ) by a dynamic property.
// Especially when they are coming from XML, the best way to access everything
// is through getItemAt.
var len:int = todo.length;
for( var i:int = 0; i < len; i++ )
{
var item:* = todo.getItemAt( i );
trace( item, getQualifiedClassName( item ) );
}
После этого моей первой попыткой будет заменить это:
<mx:AdvancedDataGridColumn headerText="STATUT" dataField="todo.status"/>
с этим:
<mx:AdvancedDataGridColumn headerText="STATUT" dataField="{ todo.status }"/>
Очень часто Flex не очень хорошо работает с вложенными свойствами, но когда вы используете скобки, он дает значение, которое находится в этом месте, в качестве более прямой ссылки.
Я думаю, вам лучше использовать XMLListCollection вместо ArrayCollection. Таким образом, вы можете называть детей по имени, а не полагаться на их обычный индекс в IList.