Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 使用分层数据刷新Datagrid_Apache Flex_Actionscript 3 - Fatal编程技术网

Apache flex 使用分层数据刷新Datagrid

Apache flex 使用分层数据刷新Datagrid,apache-flex,actionscript-3,Apache Flex,Actionscript 3,当基础ArrayCollection更改时,如何刷新Datagrid中显示的数据 <nmoschitz:dataProvider> <mx:HierarchicalData source="{arrCol_groupedData}" childrenField="accounts"/> </nmoschitz:dataProvider> 调用简单刷新(如使用简单arraycollection作为数据提供程序,或使用分组集合上的刷

当基础ArrayCollection更改时,如何刷新Datagrid中显示的数据

<nmoschitz:dataProvider>
    <mx:HierarchicalData source="{arrCol_groupedData}"
         childrenField="accounts"/>
</nmoschitz:dataProvider>

调用简单刷新(如使用简单arraycollection作为数据提供程序,或使用分组集合上的刷新)不起作用。 另外,将arrayCollection重新分配给分层数据,然后再将此集合分配给Datagrid也不起作用(即使调用invalidateProperties()或validateNow())

有什么想法吗?有人建议扩展HierarchycalData并抛出一个手动更改事件,但这对我来说似乎非常不利

谢谢,
Martin

我将整个分层数据重新分配给了datagrid。但是,只有arraycollection需要重新分配给分层数据。这就解决了问题。

您可以扩展
层次结构数据
并覆盖
属性设置器以引发CollectionChange事件:

package mypackage
{
import mx.collections.HierarchicalData;
import mx.events.CollectionEvent;
import mx.events.CollectionEventKind;

public class ModifiedHierarchicalData extends HierarchicalData
{
override public function set source(value:Object):void
{
super.source = value;
var event:CollectionEvent =
new CollectionEvent(CollectionEvent.COLLECTION_CHANGE) ;
event.kind = CollectionEventKind.RESET;
dispatchEvent(event);
}
}
}

您可以尝试刷新arrayCollection,然后在网格上调用invalidateList()

只要展开根节点并以编程方式再次关闭,就会刷新UI

                   if(!dGGrid.isItemOpen(itemData)){
                        dGGrid.expandItem(itemData,true);
                        dGGrid.expandItem(itemData,false)
                    }else{
                        dGGrid.expandItem(itemData,false);
                        dGGrid.expandItem(itemData,true);
                    }

我将整个分层数据重新分配给datagrid。但是,只有arraycollection需要重新分配给分层数据。这就解决了问题。首先检查(super.source!=value)是否可以节省一些噪音。