Apache flex flex:如何刷新(重新初始化)列表

Apache flex flex:如何刷新(重新初始化)列表,apache-flex,Apache Flex,我是一名尝试Flex的Java开发人员 所以我的新问题是: 我在Flex中有一个列表组件,由绑定dataprovider从Java获得的对象填充。 我已将拖放支持放在列表中。 一切都很好。 但我希望有一个重置函数来重新初始化列表,即将拖放的元素返回到列表中 我在reset按钮的事件处理程序上尝试了几种方法,但无法重新初始化列表数据。例如: public function resetList():void { trace("reset") listsrc.dataP

我是一名尝试Flex的Java开发人员

所以我的新问题是:

我在Flex中有一个列表组件,由绑定dataprovider从Java获得的对象填充。 我已将拖放支持放在列表中。 一切都很好。 但我希望有一个重置函数来重新初始化列表,即将拖放的元素返回到列表中

我在reset按钮的事件处理程序上尝试了几种方法,但无法重新初始化列表数据。例如:

public function resetList():void {
        trace("reset")
        listsrc.dataProvider = srv.getTerritories.lastResult
    }
已调试重置,但列表上没有更改


谢谢,

试试listsrc.invalidateList

我找到了。其实很简单。我刚才说:

public function resetList():void {
        trace("reset")
        srv.getTerritories.send()
    }

因为已经装订好了;数据提供程序中的任何更改都会直接反映到列表中。

另一种方法是将控件绑定到可绑定的arrayCollection

[Bindable]
var listDP:Array; 
在mxml代码中

listsrc.dataProvider = listDP;
在actionScript中,无论何时从服务器获取它

listDP = srv.getTerritories.send();

通过这种方式,您不必在从服务器请求数据之前实例化控件

您确定srv.getTerritories.lastResult包含新值吗?不,它包含旧值,但这不是问题,因为我希望列表包含旧值。我希望列表具有初始值。然后您需要保留作为列表的数据提供程序提供的数组的副本。因为当您将它们拖出时,它们将从数据提供程序的源中删除,因此将同一数组重新分配给它不会有任何好处,因为元素已被取出。