             itemEditorInstance = null;
             _editedItemPosition = null;
         }
+    }
+
+    /**
+     *  @private
+     *  dispatch an ITEM_EDIT_BEGINNING event;
+     */
+    private function beginningEdit(columnIndex:int, rowIndex:int, itemRenderer:IListItemRenderer = null):void
+    {
+        var dataGridEvent:DataGridEvent =
+            new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGINNING, false, true);
+            // ITEM_EDIT events are cancelable
+        dataGridEvent.columnIndex = columnIndex;
+        dataGridEvent.dataField = _columns[columnIndex].dataField;
+        dataGridEvent.rowIndex = rowIndex;
+        dataGridEvent.itemRenderer = itemRenderer;
+        if (!dispatchEvent(dataGridEvent))
+            lastEditedItemPosition = { columnIndex: columnIndex, rowIndex: rowIndex };
+
     }
 
     /**

            {
                if (displayableColumns[pos.x].editable)
                {
                    dataGridEvent = new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGINNING, false, true);
                    // ITEM_EDIT events are cancelable
                    dataGridEvent.columnIndex = displayableColumns[pos.x].colNum;
                    dataGridEvent.dataField = displayableColumns[pos.x].dataField;
                    dataGridEvent.rowIndex = pos.y;
                    dataGridEvent.itemRenderer = lastItemDown;
                    dispatchEvent(dataGridEvent);
                }
                else
                    // if the item is not editable, set lastPosition to it any
                    // so future tabbing starts from there
                    lastEditedItemPosition = { columnIndex: pos.x, rowIndex: pos.y };
            }
        }


            var column:DataGridColumn = _columns[i];
            column.owner = this;
            column.colNum = i;
            if (column.cachedHeaderRenderer)
            {
                var item:DisplayObject = column.cachedHeaderRenderer as DisplayObject
                if (item.parent)
                    item.parent.removeChild(item);
                column.cachedHeaderRenderer = null;
            }
        }

        updateSortIndexAndDirection();
