2009-12-03 57 views
0

如何在基礎ArrayCollection更改時刷新Datagrid中顯示的數據?使用分層數據刷新Datagrid

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

調用一個簡單的刷新(就像一個簡單的ArrayCollection作爲數據提供程序,或者在分組集合刷新)不起作用。 也重新分配arrayCollection到分層數據,然後再次分配給Datagrid不起作用(即使調用invalidateProperties()或validateNow())。

任何想法?有人建議擴展HierarchicalData並拋出手動更改事件,但這對我來說似乎非常尷尬。

感謝, 馬丁

+0

我重新分配了整個分層數據到數據網格。但是,只有arraycollection需要重新分配給分層數據。這解決了這個問題。 – martin 2009-12-03 13:11:34

回答

0

我重新分配了整個分層數據到數據網格。但是,只有arraycollection需要重新分配給分層數據。這解決了這個問題。

0

您可以擴展HierarchicalData和覆蓋source屬性setter拋出c​​ollectionChange事件:

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); 
} 
} 
} 
+0

檢查以查看是否(super.source!= value)首先可能會節省一些噪音。 – 2013-05-24 21:01:11

1

你可以嘗試刷新的ArrayCollection,然後在網格上調用invalidateList()

0

剛剛展開根節點並以編程方式關閉將刷新UI。

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