Flex4 DataGrid中嵌入RadioButton实现思路及代码

<s:DataGrid id="viewDg" width="100%" height="100%" fontFamily="微软雅黑" 
horizontalScrollPolicy="off" borderVisible="false" 
dataProvider="{viewList}"> 
<s:columns> 
<s:ArrayList> 
<s:GridColumn width="{wid*0.02}" resizable="false" 
itemRenderer="Module_SchoolView.RadioButtonGridItemRenderer"/> 


<s:GridColumn width="{wid*0.25}" headerText="名称" dataField="xysj02" resizable="false"/> 

<s:GridColumn width="{wid*0.25}" headerText="地名" dataField="xysj02name" resizable="false"/> 

<s:GridColumn width="{wid*0.35}" headerText="URL" dataField="xysj04" resizable="false"/> 

<s:GridColumn width="{wid*0.13}" headerText="备注" dataField="xysj05" resizable="false"/> 
</s:ArrayList> 
</s:columns> 
</s:DataGrid>

MXML页面

<?xml version="1.0" encoding="utf-8"?> 
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" 
xmlns:mx="library://ns.adobe.com/flex/mx"> 
<fx:Declarations> 
<!-- 将非可视元素(例如服务、值对象)放在此处 --> 
</fx:Declarations> 
<fx:Script> 
<![CDATA[ 

//---------------------------------------------------------------------------------------------------------- 

override public function prepare(hasBeenRecycled:Boolean):void 
{ 
super.prepare( hasBeenRecycled ); 

// We make the radio button mimic the selection status of the whole row. 
const selected_items: Vector.<Object> = grid.dataGrid.selectedItems; 

if( null == selected_items ) 
{ 
radio_button.selected = false; 
return; 
} 

if( -1 != selected_items.indexOf( data ) ) 
radio_button.selected = true; 
else 
radio_button.selected = false; 
} 

//---------------------------------------------------------------------------------------------------------- 

]]> 
</fx:Script> 

<!--The radio button is only a visual indicator for whether the row is selected or not. 
The "selected" property of the radio_button will be controlled by the "prepare" function. 
The radio_button should not be allowed any user interaction. Hence disabling it.--> 
<s:RadioButton id="radio_button" 
label="" 
enabled="false" 

horizontalCenter="0" verticalCenter="0" /> 

</s:GridItemRenderer>