This is a quick and dirty way to do it. If I had more time I would have
decoupled the renderer from the application with a custom event but this
does work...
?xml version=1.0 encoding=utf-8?
mx:Application pageTitle=Testing
xmlns:mx=http://www.adobe.com/2006/mxml;
width=100% height=100% backgroundSize=100% layout=vertical
horizontalAlign=left
xmlns:custom=customcomponents.* backgroundColor=#BB
creationComplete=onCreationComplete(event)
mx:Script
![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.RemoteObject;
import mx.utils.ArrayUtil;
import mx.events.FlexEvent;
import mx.controls.Alert;
[Bindable] private var itemsArrayCollection:ArrayCollection;
private var myService:RemoteObject;
private var itemsToDelete:Array = new Array();
public function onCreationComplete(event:FlexEvent):void
{
myService = new RemoteObject(myDestination);
myService.requestTimeout = 30;
myService.addEventListener(FaultEvent.FAULT,
faultHandler);
myService.getFormFields.addEventListener(ResultEvent.RESULT,
getItemsResultHandler);
myService.getFormFields(27);
}
private function
getItemsResultHandler(event:ResultEvent):void
{
itemsArrayCollection = new
ArrayCollection(ArrayUtil.toArray(event.result));
itemsDataGrid.rowCount = (event.result as Array).length;
}
private function faultHandler(fault:FaultEvent):void
{
switch(fault.fault.faultCode.toString())
{
case Client.Error.RequestTimeout:
Alert.show(The server is not responding.
Please check that you are connected and the server is running., Server
Timeout);
break;
default:
Alert.show(fault.fault.faultString,
fault.fault.faultCode.toString());
break;
}
}
public function addItemToDelete(itemToDelete:String):void
{
itemsToDelete.push(itemToDelete)
}
public function removeItemToDelete(itemToRemove:String):void
{
for(var i:int ; i itemsToDelete.length ; i++)
{
if(itemsToDelete[i] == itemToRemove)
{
itemsToDelete.splice(i, 1);
}
}
}
public function showItemsToDelete():void
{
var alertText:String = ;
for(var i:int ; i itemsToDelete.length ; i++)
{
alertText += itemsToDelete[i] + , ;
}
Alert.show(alertText);
}
]]
/mx:Script
mx:DataGrid dataProvider={itemsArrayCollection}
id=itemsDataGrid
mx:columns
mx:DataGridColumn id=fieldNameColumn headerText=Name
dataField=FieldName width=150 sortable=false textAlign=left/
mx:DataGridColumn id=fieldLabelColumn headerText=Label
dataField=FieldLabel width=350 sortable=false textAlign=left/
mx:DataGridColumn id=fieldTypeColumn headerText=Type
dataField=FieldType width=80 sortable=false textAlign=left/
mx:DataGridColumn id=requiredColumn headerText=Required
dataField=Required width=60 sortable=false textAlign=center/
mx:DataGridColumn id=fieldOrderColumn headerText=Order
dataField=FieldOrder width=50 sortable=false textAlign=center/
mx:DataGridColumn id=fieldDeleteColumn
headerText=Remove dataField=FieldID width=60 sortable=false
textAlign=center itemRenderer=renderers.RemoveItemCheckBox/
/mx:columns
/mx:DataGrid
mx:Button id=showItems label=Show Items To Delete
click=showItemsToDelete() /
/mx:Application
renderers.RemoveItemCheckBox
?xml version=1.0 encoding=utf-8?
mx:CheckBox xmlns:mx=http://www.adobe.com/2006/mxml;
click=onClick(event)
mx:Script
![CDATA[
import mx.events.ListEvent;
import mx.controls.dataGridClasses.DataGridListData;
import mx.controls.Alert;
import mx.core.Application;
private var itemID:String;
override public function set data(value:Object):void
{
super.data = value;
itemID = value[DataGridListData(listData).dataField];
}
private function onClick(event:MouseEvent):void
{
if(this.selected)
{
Application.application.addItemToDelete(itemID);