Apache flex 在actionscript中设置dataprovider

Apache flex 在actionscript中设置dataprovider,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我在MXML中将datagrid w/dataProvider属性设置为: dataProvider="{pagedResult.lastResult}" 如何在actionscript中设置数据提供程序?我有: protected function getResult (event:FlexEvent):void { pagedResult.token = mydata.paged(); adg1.dataProvider = pagedResult.lastResult; } 但是我做错

我在MXML中将datagrid w/dataProvider属性设置为:

dataProvider="{pagedResult.lastResult}"
如何在actionscript中设置数据提供程序?我有:

protected function getResult (event:FlexEvent):void
{
pagedResult.token = mydata.paged();
adg1.dataProvider = pagedResult.lastResult;
}

但是我做错了一些事情,因为它不工作

您的代码看起来很可靠,我想问题是您需要转换它。您没有说明您的服务返回的是哪种类型的数据,但在本示例中,我将假设一个数组

试试这样的

var myCollection : ArrayCollection = new ArrayCollection(pagedResult.lastResult as Array);
adg1.dataProvider = myCollection;

首先,如果您要从Actionscript设置dataProvider,我将从MXML中删除绑定,或者您可以只更新绑定的属性,但我不知道它的类型,因此我假设您从MXML标记中删除绑定没有问题

第二,正如前面提到的另一个答案,您希望将结果转换为ArrayCollection,您可以在mx.utils.ArrayUtil类中找到一些有用的函数


最后,在处理大型数据集时,应该直接更新ArrayCollection,而不是始终创建新的ArrayCollection,这一点很重要。只要您通过新创建的ArrayCollection添加/删除/etc,列表/数据网格将以最佳方式自动重新绘制和更新。必须为dataProvider类提供一个集合对象,例如ArrayCollection、XMLListCollection。将上一个结果转换为其中一个,并在创建变量时将其设置为[Bindable]。Brian Bishop这不是真的。在Flex3中,任何对象都可以用作数据提供者。尽管可能有理由使用集合,但这并不是唯一可以接受的。在Flex4中,我很确定数据提供者必须实现IList接口。@Flextras啊,没错,我想是的。查找后发现,使用ArrayCollection/XMLListCollection是公认的最佳实践,但不是强制性的。Adobe on DataProviders:使用集合明确地确保数据同步,并提供更简单和更复杂的数据访问和操作工具。。。