1

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

这是我要运行的代码...

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

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

做得很好...

dg.dataProvider = obj.ResultSet.Result

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

我也试着做...

var dgDP:dataProvider = new dataProvider();

但由于某种原因,Flex 无法识别它......

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

4

2 回答 2

1

dataProvider 是驻留在许多 ListBased 类上的属性。它不是数据类型。您的 dataProvider 的数据类型是什么?IT 可以是 XML、数组、XMLListCollection、ArrayCollection、XMLList 或通用对象。[并且我假设支持其他数据类型)。

您向 dataProvider 添加内容的“方式”完全取决于您使用的 dataProvider 的类型。

在 Flex 4 中,dataProvider 对象必须实现 IList 接口,但在 Flex 3 中,dataProviders 是通用对象。

在您的情况下,由于您已经拥有这些对象,我只需遍历它们并将它们添加到数组或 ArrayCollection 中,然后使用 hat 数组作为 dataProvider。

于 2010-09-05T01:09:21.443 回答
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属性时,它将被转换为 ICollectionView 对象。该接口的唯一实现者是具有addItem 和 addItemAt方法的ListCollectionView类(ArrayCollection 和 XMLListCollection 的基类) 。

于 2010-09-05T05:28:22.127 回答