2010-02-22 114 views
3

我正在使用Flex,Adobe Air的應用程序工作。我有一個DataGrid和一個XML作爲我的DataProvider。在執行程序期間,我的XML被更新。更新和保存XML後,我的DataGrid也應該得到更新。我用Dataprovidername.refresh()方法,但它不工作。更新DataProvider時DataGrid刷新

+6

你說你解決了這個問題,但沒有說明如何。請將您的解決方案添加爲面向未來的人的答案。 – geowa4 2010-03-05 02:36:55

回答

1

你做的XML變量可綁定?:

[Bindable] 
private var data:XML... 
+0

是的,我已經讓我的XMLListCollection Bindable ... – 2010-02-22 10:14:54

5

更新數據後,嘗試手動調度集合變化事件:

datagrid.dataProvider.dispatchEvent(new CollectionEvent(CollectionEvent.COLLECTION_CHANGE)); 
+0

感謝您的回覆,我自己解決了這個問題。 – 2010-02-26 04:19:37

1

我已經解決了我的刷新數據網格的問題當數據提供者XML被改變時...

而不是保存XML文檔並將其加載到數據網格數據提供者,我將更新的XML文檔分配給數據提供者XML。提供商作爲一個新的提供商..這樣的刷新問題,與綁定可以解決。

3

對於那些對內部感興趣的人。 MX Halo DataGrid和AdvanceDataGrids在檢測到對數據提供者的修改後將自行刷新。這應該是自動的。如果您將數據提供者標記爲可綁定並修改數據提供者本身的變量,這當然只會起作用。將您的數據提供者作爲ICollectionView一直是個好主意。例如,如果您爲數據網格指定「數組」或「XML」作爲數據提供者,那麼數據網格將在內部創建一個新的ArrayCollection或XmlListCollection,並將其用作數據提供者,而不是使用該數組。在這種情況下,添加/刪除源數組不會產生任何影響。另外,如果需要「重新繪製」數據網格,則需要調用invalidateList()來代替。許多人認爲「invalidateDisplayList()」應該這樣做,但它不會。這適用於所有基於列表的控件(從ListBase繼承的那些控件)。

+0

您不知道您對此評論有多幫助。非常感謝! – 2012-07-19 14:51:48