I'm having a problem implementing keyboard navigation with a custom editable 
datagrid. I want to have it such that if you are editing a cell, you can use 
the arrow keys to move around and edit other cells.  Given a simple grid I can 
capture the keydown and set the editedItemPosition. However, the custom grid 
has a listener for ITEM_EDIT_END and the handler for that event is 

private function handleEditEnd(event:DataGridEvent):void
                {
                        trace("datagrid.handelEditEnd");
                        trace(event.reason.toString());
                        
                        if (event.reason == 
mx.events.DataGridEventReason.CANCELLED)
                {
                    // Do not update cell.
                    return;
                }      
                        // get the new data from the editor
                        var newData:String = 
mx.controls.TextInput(event.currentTarget.itemEditorInstance).text;
                        var row:int = event.rowIndex;
                        var col:int = event.columnIndex - 1;
                        trace("newData: " + newData);
                        event.preventDefault();
                        this.destroyItemEditor();
                        //try to update the data in the data provider
                        this.dataProvider[row].cells[col].data = newData;
                        this.dataProvider.itemUpdated(event.itemRenderer.data); 
                
                        
                } 

I got this by looking at the example in the livedocs for "Passing multiple 
values back from an item editor" 
[http://livedocs.adobe.com/flex/3/html/celleditor_8.html#247667] which shows 
using event.preventDefault() and destroyItemEditor().  However, this causes 
problems with getting the keyboard navigation to work.  If I comment out those 
lines, the keyboard navigation works but then the datagrid doesn't update the 
dataProvider.  

Any ideas how to work around this?

-Phil

Reply via email to