package
{
import flash.display.Sprite;
import flash.events.KeyboardEvent;
import mx.controls.*;
import mx.events.FocusRequestDirection;
public class UserDataGrid extends AdvancedDataGrid {
private var _rowColor:Function;
public function UserDataGrid(){
super();
this.addEventListener(KeyboardEvent.KEY_DOWN,doKeyDown);
}
//光标键再次datagrid中的跳转控制
private function doKeyDown(event:KeyboardEvent):void{
var keyCode:int = event.keyCode;
var _row:int = this.editedItemPosition.rowIndex;
var _column:int = this.editedItemPosition.columnIndex;
var _length:int = this.dataProvider.length;
if(keyCode == 38){
this.editedItemPosition ={ rowIndex:_row == 0 ? _length-1:_row-1,columnIndex:_column};
return;
}
if(keyCode == 40){
this.editedItemPosition ={ rowIndex:_row == _length-1 ?0:_row+1,columnIndex:_column};
return;
}
var indexs:Array = editColIndexs(this);
var tempIndex:int = indexs.indexOf(this.editedItemPosition.columnIndex);
if(keyCode == 37){
if(_row == 0 && _column==0)
focusManager.moveFocus(FocusRequestDirection.BACKWARD);
this.editedItemPosition ={ rowIndex:tempIndex == 0 ?_row-1:_row,columnIndex:tempIndex == 0 ?indexs[indexs.length-1] : indexs[tempIndex-1]};
return;
}
if(keyCode == 39){
this.editedItemPosition ={ rowIndex:(tempIndex != indexs.length-1 || _row == _length-1) ?_row:_row+1,columnIndex:(tempIndex == indexs.length-1 && _row == _length-1)?indexs[tempIndex]:(tempIndex == indexs.length-1 ?indexs[0] : indexs[tempIndex+1])};
return;
}
}
}
}
调用类:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" xmlns:ns1="com.qiansoft.view.*">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
private function init():void{
var list:ArrayCollection = new ArrayCollection();
list.addItem({name:"litter",age:23,gender:"male",email:"changliangno1@163.com"});
list.addItem({name:"施常亮",age:23,gender:"男",email:"changliangno1@163.com"});
_Grid.dataProvider = list;
}
]]>
</mx:Script>
<mx:TextInput x="138" y="184"/>
<mx:TextInput x="503" y="184"/>
<ns1:UserDataGrid id="_Grid" x="116.5" y="214" width="601" editable="true">
<ns1:columns>
<mx:AdvancedDataGridColumn headerText="姓名" dataField="name" />
<mx:AdvancedDataGridColumn headerText="年龄" dataField="age" />
<mx:AdvancedDataGridColumn headerText="性别" dataField="gender" />
<mx:AdvancedDataGridColumn headerText="邮箱" dataField="email"/>
</ns1:columns>
</ns1:UserDataGrid>
</mx:Application>