如
<mx:DataGrid id="dgList"
x="10"
y="39"
dataProvider="{data11}"
width="557"
height="185">
<mx:columns>
<mx:DataGridColumn headerText="选择"
dataField="selected"
itemRenderer="MyControl.SelectBox"/>
<mx:DataGridColumn headerText="ID"
dataField="ID"/>
<mx:DataGridColumn headerText="Text"
dataField="Text"
itemRenderer="{new ClassFactory(mx.controls.Label)}"/>
</mx:columns>
</mx:DataGrid>
SelectBox.as
package MyControl
{
import flash.events.Event;
import mx.core.Application;
import mx.controls.CheckBox;
import mx.controls.DataGrid;
public class SelectBox extends CheckBox
{
public function SelectBox()
{
super();
}
override public function initialize():void
{
super.initialize();
this.addEventListener(Event.CHANGE, OnChange);
}
private function OnChange(evn:Event):void
{
super.data.selected=this.selected;
this.label=this.selected ? "已选" : "未选";
}
[Bindable]
override public function set data(value:Object):void
{
if (value == super.data)
return;
super.data=value;
if (value == null)
return;
this.Refresh();
}
override public function get data():Object
{
return super.data;
}
public function Refresh():void
{
this.selected=(super.data.selected == "true");
this.label=this.selected ? "已选" : "未选";
}
}
}
访问当前选中的 itemRenderer 对应的 SelectBox 的属性
SelectBox(dgList.indexToItemRenderer(dgList.selectedIndex)).Refresh();