来源:http://blog.sina.com.cn/s/blog_5ed17a730100vrja.html
在Flex DataGrid中实现点击Enter键可编辑对象跳转
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="100%"
height="100%" creationComplete="init()">
<mx:DataGrid id="dg" dataProvider="{ac}" height="232" editable="true">
<mx:columns>
<mx:DataGridColumn headerText="姓名" dataField="name"/>
<mx:DataGridColumn headerText="年龄" dataField="age"/>
</mx:columns>
</mx:DataGrid>
<mx:ArrayCollection id="ac">
<mx:Object name="111" age="11"/>
<mx:Object name="222" age="22"/>
<mx:Object name="333" age="33"/>
<mx:Object name="444" age="44"/>
<mx:Object name="555" age="55"/>
<mx:Object name="666" age="66"/>
</mx:ArrayCollection>
<mx:Script>
<![CDATA[
import mx.core.EdgeMetrics;
import mx.events.DataGridEvent;
import mx.events.ListEvent;
private function init():void {
addEventListener(KeyboardEvent.KEY_DOWN, enterKHandler);
}
private function enterKHandler(evt:KeyboardEvent):void {
if(dg.editedItemPosition == null) {
return;
}
var editpos:Object = dg.editedItemPosition;
if(evt.keyCode == Keyboard.ENTER){
if(editpos.rowIndex == dg.dataProvider.length-1) {
if(editpos.columnIndex < dg.columnCount-1) {
editpos.columnIndex ++;
dg.editedItemPosition = editpos;
} else if(editpos.columnIndex == dg.columnCount-1) {
var obj:Object = {name:"777", age:"7"};
ac.addItem(obj);
editpos.rowIndex ++;
editpos.columnIndex = 0;
dg.editedItemPosition = editpos;
}
} else if(editpos.rowIndex < dg.dataProvider.length-1) {
if(editpos.columnIndex < dg.columnCount-1) {
editpos.columnIndex ++;
dg.editedItemPosition = editpos;
} else {
editpos.rowIndex ++;
editpos.columnIndex = 0;
dg.editedItemPosition = editpos;
}
}
}
}
]]>
</mx:Script>
</mx:Application>