2011-01-07 40 views
0

我不知道我在做什么错,所以也许有人可以解释给我。我需要帮助清单dataprovider

我有AMFPHP被发回对象的数组,它看起来像这样:

(Object)#0 
    content = (Array)#1 
    [0] (Object)#2 
     config = "1" 
     id = "3" 
     param = "3" 
     title = "categorypreview" 
    [1] (Object)#3 
     config = "0" 
     id = "1" 
     param = "-1" 
     title = "highestdisplay" 
    [2] (Object)#4 
     config = "0" 
     id = "8" 
     param = "-1" 
     title = "featured" 
    header = (Array)#9 
    [0] (Object)#10 
     config = "1" 
     id = "9" 
     param = "5" 
     title = "categorymenu" 
    [1] (Object)#11 
     config = "1" 
     id = "6" 
     param = "1" 
     title = "adzones" 

,我使用MXML是:

<s:List id="headerList" y="52" left="10" width="200" height="150"> 
    <s:layout> 
     <s:HorizontalLayout/> 
    </s:layout> 
</s:List> 
<mx:DataGrid id="mydatagrid" x="10" y="214"> 
    <mx:columns> 
     <mx:DataGridColumn headerText="Column 1" dataField="title"/> 
     <mx:DataGridColumn headerText="Column 2" dataField="param"/> 
    </mx:columns> 
</mx:DataGrid> 

的动作是:

protected function getLayoutResultHandler(event:ResultEvent):void 
     { 
      mydatagrid.dataProvider = event.result.header; 
      headerList.dataProvider = event.result.header; 
     } 

datagrid就在那里进行测试。 ,我遇到的问题是数据网格与底座阵列的值填充,但名单给我的错误:

类型强制失败:无法转换[] @ dcc5629到mx.collections.IList

我在做什么错?

回答

2

我想通了!

这是我必须做的,在动作我修改我的功能是这样的:

protected function getLayoutResultHandler(event:ResultEvent):void 
{ 
    var header:ArrayCollection = new ArrayCollection(event.result.header); 
    headerList.dataProvider = header; 
    mydatagrid.dataProvider = header; 
} 

现在一切正常。

+0

使用amfphp版本1.9,数组结果在“event.result”对象中,我必须将其转换为ArrayCollection构造函数中的Array。否则,这工作得很好,谢谢! – 2011-08-19 05:10:49

0

尝试铸造event.result.header作为某种集合。我最好的猜测是,从你的amfphp调用返回的数据不会被作为数据类型转换,并且你的List不知道如何处理它。

protected function getLayoutResultHandler(event:ResultEvent):void 
{ 
    mydatagrid.dataProvider = event.result.header as ArrayCollection; 
    headerList.dataProvider = event.result.header as ArrayCollection; 
}