<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
initialize="initData()" layout="absolute">
<mx:Script>
<![CDATA[
import mx.controls.TextInput;
import mx.controls.Alert;
import mx.collections.*;
import mx.events.*;
private var DGArray:Array = [
{Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99},
{Artist:'Pavement', Album:'Brighten the Corners', Price:11.99}];
[Bindable]
public var initDG:ArrayCollection;
public function initData():void {
initDG=new ArrayCollection(DGArray);
}
public function editEnd(event:DataGridEvent):void {
//Save the data before calling Alert
var myEditor:TextInput =
TextInput(event.currentTarget.itemEditorInstance);
// Get the new value from the editor.
var newVal:String = myEditor.text;
var dataObject:Object = event.itemRenderer.data;
var property:String = event.dataField;
Alert.show("Do you want to save changes?","Save changes",Alert.YES | Alert.NO,null,function(ev:CloseEvent):void {
//If we have clicked YES then update the data collection manually
if (ev.detail == Alert.YES) {
dataObject[property] = newVal.toString();
initDG.itemUpdated(dataObject,property);
}
});
//prevent data grid to update his dataProvider collection
event.preventDefault();
}
]]>
</mx:Script>
<mx:DataGrid id="myGrid" width="350" height="200"
dataProvider="{initDG}" editable="true" itemEditEnd="editEnd(event)" >
<mx:columns>
<mx:DataGridColumn dataField="Album" />
<mx:DataGridColumn dataField="Price" />
</mx:columns>
</mx:DataGrid>
<mx:DataGrid id="readOnlyGrid" width="350" height="200"
dataProvider="{initDG}" x="0" y="208">
<mx:columns>
<mx:DataGridColumn dataField="Album" />
<mx:DataGridColumn dataField="Price" />
</mx:columns>
</mx:DataGrid>
</mx:WindowedApplication>