我想做的只是添加到dataProvider,但是当我这样做时,我收到错误。
这是我正在尝试运行的代码......
dg.dataProvider.addItem(obj.ResultSet.Result[i]);
它在for循环中,使用i作为整数。
做得很好......
dg.dataProvider = obj.ResultSet.Result
但这对我不起作用,因为我需要不止一次地添加到数据提供者。我正在以10个批次获得结果,并且我需要在收到数据时将每个批次添加到dataProvider。
我也试图做......
var dgDP:dataProvider = new dataProvider();
但由于某种原因,Flex不承认它......
关于如何实现这一目标的任何想法?
答案 0 :(得分:1)
dataProvider是一个驻留在许多ListBased类上的属性。它不是数据类型。 dataProvider的数据类型是什么? IT可以是XML,数组,XMLListCollection,ArrayCollection,XMLList或通用对象。 [我假设支持其他数据类型。)
向dataProvider添加内容的“方式”完全取决于您使用的dataProvider的类型。
在Flex 4中,dataProvider对象必须实现IList接口,但在Flex 3中,dataProviders是通用对象。
在你的情况下,由于你已经拥有了这些对象,我只需将它们循环并将它们添加到数组或ArrayCollection中,然后使用hat数组作为dataProvider。
答案 1 :(得分:1)
您必须初始化dataProvider
。
<mx:DataGrid creationComplete="onDGCreate(event)"/>
脚本:
public function onDGCreate(e:Event):void
{
var dg:DataGrid = e.currentTarget as DataGrid;
dg.dataProvider = new ArrayCollection();
//or
dg.dataProvider = new XMLListCollection();
}
现在这将有效:
dg.dataProvider.addItem(obj.ResultSet.Result[i]);
当您将除ArrayCollection和XMLListCollection之外的内容分配给dataProvider
属性时,它将为converted to an ICollectionView object。此接口的唯一实现者是ListCollectionView
类(ArrayCollection和XMLListCollection的基类),它具有addItem and addItemAt方法。