2010-02-22 79 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