<mx:DataGrid id="dataGrid" dataProvider="{listInfo.list}" width="100%" height="100%" itemEditEnd="dataGrid_itemEditEndHandler(event)" editable="true">
<mx:columns>
<mx:DataGridColumn headerText="ID" dataField="id" width="60" />
<mx:DataGridColumn headerText="是否结账" dataField="payStatus" width="100" editable="false" >
<mx:itemRenderer >
<fx:Component>
<mx:CheckBox label="{TuanConfigureContext.dataGridCashPayStatus(data)}" selected="{data.editPayStatus == TuanConfigureContext.CASH_PAY_STATUS_PAY }" paddingLeft="5" change="checkbox1_changeHandler(event)">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.DataGrid;
import mx.controls.listClasses.ListData;
import mx.core.Application;
import net.synke.admin.TuanConfigureContext;
protected function checkbox1_changeHandler(event:Event):void
{
data.editPayStatus = this.selected ? TuanConfigureContext.CASH_PAY_STATUS_PAY : TuanConfigureContext.CASH_PAY_STATUS_UNPAY;
this.setStyle("color" , (data.editPayStatus != data.payStatus) ? "#ff0000" : "#000000");
((listData.owner as DataGrid).dataProvider as ArrayCollection).refresh();
}
]]>
</fx:Script>
</mx:CheckBox>
</fx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="用户名" dataField="username" width="120" />
<mx:DataGridColumn headerText="管理员" dataField="adminUsername" width="120" />
<mx:DataGridColumn headerText="金额" dataField="money" width="120" />
<mx:DataGridColumn headerText="支付时间" dataField="createTime" width="180" labelFunction="{DataGridUtil.dateLabelFormatDateTime}" />
<mx:DataGridColumn headerText="结账时间" dataField="payStatus" width="100" labelFunction="{DataGridUtil.dateLabelFormatDateTime}" />
</mx:columns>
</mx:DataGrid>
目前没有发现更好的方法让columnRenderer与容器进行通信(例如事件),只能通过直接对数据的操作进行互相通信,也许这就是flex datagrid进行数据传递的方法吧。