如何将项目附加到dataProvider? (柔性)

时间:2010-09-05 00:38:00

标签: flex actionscript-3 actionscript dataprovider

我想做的只是添加到dataProvider,但是当我这样做时,我收到错误。

这是我正在尝试运行的代码......

dg.dataProvider.addItem(obj.ResultSet.Result[i]);

它在for循环中,使用i作为整数。

做得很好......

dg.dataProvider = obj.ResultSet.Result

但这对我不起作用,因为我需要不止一次地添加到数据提供者。我正在以10个批次获得结果,并且我需要在收到数据时将每个批次添加到dataProvider。

我也试图做......

var dgDP:dataProvider = new dataProvider();

但由于某种原因,Flex不承认它......

关于如何实现这一目标的任何想法?

2 个答案:

答案 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方法。