Flex 4 DataGrid 的 checkbox

<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进行数据传递的方法吧。

你可能感兴趣的:(.net,Flex)