我正在使用自定义组件CheckBoxList DataGrid(http://blogs.adobe.com/aharui/2008/02/checkbox_selection_in_datagrid.html),而作为dataProvider我有一个ArrayCollection,其中包含以下项目:
name="item name" selected="true"
我希望在数据模型中将selected属性设置为false或true时更新CheckBox列表。
感谢
答案 0 :(得分:0)
到目前为止,最简单的方法是更新其中的一些对象后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>