<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="initApp()"
pageTitle="DataGrid Item Renderer Demo" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.collections.IViewCursor;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.managers.CursorManager;
[Bindable]
private var itemAC:ArrayCollection;
private function initApp():void
{
CursorManager.setBusyCursor();
itemConn.send();
}
private function resultItemHandler(event:ResultEvent):void
{
var source:ArrayCollection = itemConn.lastResult.items.item as ArrayCollection;
var cursor:IViewCursor = source.createCursor();
var result:ArrayCollection = new ArrayCollection();
while (!cursor.afterLast)
{
var currentObj:Object = cursor.current;
var cv:String = currentObj["hasLogo"];
cv = cv.toUpperCase();
var newValue:Boolean = false;
if (cv == "YES" || cv == "TRUE" || cv.toString() == "1")
{
newValue = true;
}
currentObj["hasLogo"] = newValue;
result.addItem(currentObj);
cursor.moveNext();
}
itemAC = result;
CursorManager.removeBusyCursor();
}
private function doAddItem():void
{
itemAC.addItem({name: "Item_"+(itemAC.length+1), quantity:1, color:"white", size:"small", hasLogo:false});
}
private function doGenerateXML():void
{
var document:XMLDocument = new XMLDocument("<items></items>");
var rootNode:XMLNode = document.firstChild;
var len:int = itemAC.length;
for (var i:int = 0; i < len; i++)
{
var currentItem:Object = itemAC[i];
var elementNode:XMLNode = document.createElement("item");
rootNode.appendChild(elementNode);
for (var field:* in currentItem)
{
var value:* = currentItem[field];
var newValue:* = value;
if (field == "hasLogo")
{
newValue = (value ? "yes" : "no");
}
if (field != "mx_internal_uid") {
elementNode.attributes[field] = newValue;
}
}
}
var showXML:XML = new XML(document.firstChild);
infoTA.text = showXML.toXMLString();
mainVS.selectedChild=xmlView;
}
]]>
</mx:Script>
<mx:HTTPService id="itemConn" url="items.xml" useProxy="false" result="resultItemHandler(event)"/>
<mx:Panel layout="absolute" left="5" top="5" right="5" bottom="5" title="DataGrid Renderer Demo">
<mx:ViewStack id="mainVS" width="100%" height="100%" creationPolicy="all">
<mx:VBox id="dgView" left="5" top="5" right="5" bottom="5">
<mx:DataGrid id="itemDG" dataProvider="{itemAC}" editable="true" width="100%" height="100%">
<mx:columns>
<mx:DataGridColumn dataField="name" headerText="Item" />
<mx:DataGridColumn dataField="quantity" headerText="Quantity" width="100" minWidth="70"
rendererIsEditor="true" editorDataField="result" itemRenderer="renderer.QuantityRenderer"/>
<mx:DataGridColumn dataField="color" headerText="Color" width="80"
rendererIsEditor="true" editorDataField="result" itemRenderer="renderer.ColorPickerRenderer"/>
<mx:DataGridColumn dataField="size" headerText="Size" width="140" minWidth="130"
rendererIsEditor="true" editorDataField="result" itemRenderer="renderer.SizeRenderer"/>
<mx:DataGridColumn dataField="hasLogo" headerText="Logo?" width="100"
rendererIsEditor="true" editorDataField="result" itemRenderer="renderer.CheckRenderer"/>
</mx:columns>
</mx:DataGrid>
<mx:HBox paddingBottom="5" paddingLeft="5" paddingTop="5">
<mx:Button label="Generate XML" width="120" click="doGenerateXML();"/>
<mx:Button label="New Item" click="doAddItem()"/>
</mx:HBox>
</mx:VBox>
<mx:VBox id="xmlView" left="5" top="5" right="5" bottom="5">
<mx:TextArea id="infoTA" width="100%" height="100%" />
<mx:HBox paddingBottom="5" paddingLeft="5" paddingTop="5">
<mx:Button label="Back" width="120" click="mainVS.selectedChild=dgView"/>
</mx:HBox>
</mx:VBox>
</mx:ViewStack>
</mx:Panel>
</mx:Application>