<?xml version="1.0"?>
<!-- itemRenderers\events\BeginEditEventAccessEditor.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
  <mx:Script>
    <![CDATA[
      import mx.events.DataGridEvent;
      import mx.controls.NumericStepper;
      import mx.collections.ArrayCollection;
      import mx.controls.listClasses.IDropInListItemRenderer;
      import mx.controls.TextInput;
      
      [Bindable]
      private var myDP:ArrayCollection = new ArrayCollection([
        {Artist:'Pavement', Album:'Slanted and Enchanted', Price:'(11.99)'},
        {Artist:'Pavement', Album:'Crooked Rain, Crooked Rain', Price:'(10.99)'},
        {Artist:'Pavement', Album:'Wowee Zowee', Price:'(12.99)'},
        {Artist:'Pavement', Album:'Brighten the Corners', Price:'(11.99)'},
        {Artist:'Pavement', Album:'Terror Twilight', Price:'(11.99)'}
      ]);
      // Handle the itemEditBegin event.
      private function onEditedBegin(event:DataGridEvent):void
      {
        // Get the name of the column being editted.
        var colName:String = myDataGrid.columns[event.columnIndex].dataField;
        var temp:String;
        if(colName=="Price")
        {
          // Handle the event here.
          event.preventDefault();
          // Creates an item editor.
          myDataGrid.createItemEditor(event.columnIndex,event.rowIndex);
          // All item editors must implement the IDropInListItemRenderer interface
          // and the listData property.
          // Initialize the listData property of the editor.
          IDropInListItemRenderer(myDataGrid.itemEditorInstance).listData =
            IDropInListItemRenderer(myDataGrid.editedItemRenderer).listData;
          // Copy the cell value to the NumericStepper control.
          myDataGrid.itemEditorInstance.data = myDataGrid.editedItemRenderer.data;
          // Add 20 percent to the current price.
          temp = TextInput(myDataGrid.itemEditorInstance).text;
          if (temp.indexOf("(") != -1){
            temp = temp.replace("(","");
          }
          if (temp.indexOf(")") != -1){
            temp = temp.replace(")","");
          }
          TextInput(myDataGrid.itemEditorInstance).text = temp;
          
        }
      }
      private function onEditedEnd(event:DataGridEvent):void{
        var colName:String = myDataGrid.columns[event.columnIndex].dataField;
        var curText:String = TextInput(myDataGrid.itemEditorInstance).text;
      
        if(colName=="Price")
        {
          // Handle the event here.
          //event.preventDefault();
          // Creates an item editor.
          //myDataGrid.createItemEditor(event.columnIndex,event.rowIndex);
          // All item editors must implement the IDropInListItemRenderer interface
          // and the listData property.
          // Initialize the listData property of the editor.
          //IDropInListItemRenderer(myDataGrid.itemEditorInstance).listData =
          //IDropInListItemRenderer(myDataGrid.editedItemRenderer).listData;
          // Copy the cell value to the NumericStepper control.
          //myDataGrid.itemEditorInstance.data = myDataGrid.editedItemRenderer.data;
          // Add 20 percent to the current price.
          if (curText != ""){
            TextInput(myDataGrid.itemEditorInstance).text = "(" + curText + ")";
          }
          
        }
      }
    ]]>
  </mx:Script>
  
  <mx:Style>
    .testTip
    {
      border-color: #ffffdd;
      color: #ff0000;
      font-weight: bold;
    }
  </mx:Style>
  
  <mx:DataGrid id="myDataGrid" dataProvider="{myDP}"
         editable="true"
         itemEditBegin="onEditedBegin(event);" itemEditEnd="onEditedEnd(event);"
         rowHeight="60">
    <mx:columns>
      <mx:DataGridColumn dataField="Artist" />
      <mx:DataGridColumn dataField="Album" width="130" />
      <mx:DataGridColumn dataField="Price" editorDataField="text">
        <mx:itemEditor>
          <mx:Component>
            <mx:TextInput/>
          </mx:Component>
        </mx:itemEditor>
      </mx:DataGridColumn>
    </mx:columns>
  </mx:DataGrid>
</mx:Application>