2011-01-07 2 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> 

ActionScript, является:

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

Datagrid предназначен для тестирования. Проблема, которую я имею является DataGrid населяет со значениями массива заголовка, но список дает мне ошибку:

Тип Принуждение: не может преобразовать [] @ dcc5629 в mx.collections.IList

Что я делаю неправильно?

ответ

2

Я понял!

Вот что я должен был сделать, в ActionScript я изменил свою функцию, чтобы быть в этом:

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, и мне пришлось отдать его в Array в конструкторе ArrayCollection. В противном случае это отлично поработало, спасибо! –

0

Try casting 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; 
}