Самым простым способом является refresh
ArrayCollection
после обновления некоторых объектов внутри него. В конце приведен пример этого.
Я не верю, что вы можете связать данные в ArrayCollection. Я думаю, что вам нужно было бы расширить Object
(или, возможно, FlashProxy
), чтобы создать собственный класс, который, когда бы ни изменялись некоторые его свойства, приказывал Приложению обновить данный список данных таким же образом, как мы сделали это вручную в примере.
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="426" height="243"
showStatusBar="false">
<fx:Script>
<![CDATA[
import mx.collections.ICollectionView;
import mx.controls.Alert;
import mx.events.CollectionEvent;
import mx.events.FlexEvent;
protected function randomizeData_click(event:MouseEvent):void
{
for each (var o:Object in data)
{
o.name = Math.round(Math.random() * 100);
o.selected = Math.random() < 0.5;
}
data.refresh();
}
]]>
</fx:Script>
<fx:Declarations>
<s:ArrayCollection id="data">
<fx:Object name="1" selected="false" />
<fx:Object name="2" selected="false" />
<fx:Object name="3" selected="true" />
<fx:Object name="4" selected="false" />
</s:ArrayCollection>
</fx:Declarations>
<mx:DataGrid id="dataGrid" dataProvider="{data}" top="10" left="10" bottom="39" right="10">
<mx:columns>
<mx:DataGridColumn headerText="Item" dataField="name"/>
<mx:DataGridColumn headerText="Selected" dataField="selected" itemRenderer="mx.controls.CheckBox" />
</mx:columns>
</mx:DataGrid>
<s:Button label="Randomize Data" right="10" bottom="10" click="randomizeData_click(event)"/>
</s:WindowedApplication>