我正在使用Flex,Adobe Air开发应用程序。我有一个DataGrid,XML作为我的DataProvider。在程序执行期间,我的XML被更新。更新并保存XML后,我的DataGrid也应该得到更新。我使用了Dataprovidername.refresh()
方法,但它无效。
答案 0 :(得分:5)
更新数据后,尝试手动调度集合更改事件:
datagrid.dataProvider.dispatchEvent( new CollectionEvent(CollectionEvent.COLLECTION_CHANGE));
答案 1 :(得分:3)
对于那些对内部感兴趣的人。 MX Halo DataGrid和AdvanceDataGrids在检测到对数据提供程序的修改时将自行刷新。这应该是自动的。这当然只有在将数据提供者标记为可绑定并修改数据提供者本身的变量时才有效。将dataprovider作为ICollectionView始终是个好主意。
例如,如果将“Array”或“XML”指定为datagrid的数据提供者,则datagrid将在内部创建新的ArrayCollection或XmlListCollection,并将其用作数据提供者。在这种情况下,添加/删除源数组不会产生任何影响。
此外,如果您需要“重新绘制”数据网格,则需要调用invalidateList()。很多人认为“invalidateDisplayList()”应该这样做,但事实并非如此。这适用于所有基于列表的控件(从ListBase继承的Ones)。
答案 2 :(得分:1)
您是否制作了XML变量Bindable?:
[Bindable]
private var data:XML...
答案 3 :(得分:1)
我已经解决了在更改数据提供程序XML时刷新数据网格的问题....
而不是保存XML文档并将其加载到数据网格数据提供程序,我将更新的XML文档作为新提供程序分配给数据提供程序。这样就可以解决带有绑定的刷新问题。 / p>