De loin la meilleure façon est de refresh
le ArrayCollection
après avoir mis à jour certains des objets sein. Il y a un exemple de le faire à la fin.
Je ne crois pas que vous êtes en mesure de lier les données dans ArrayCollection. Je pense que ce que vous devez faire est d'étendre Object
(ou peut-être FlashProxy
) pour créer une classe personnalisée qui, lorsque certaines de ses propriétés ont changé, indique à l'Application de mettre à jour la liste de données donnée de la même manière que nous l'avons fait manuellement dans l'exemple.
<?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>
Qu'est-ce que la liste CheckBox et où est-elle en relation avec DataGrid? – quoo
désolé j'ai mis à jour ma question – aneuryzm