Flex DataGrid中光标键的焦点控制例子

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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值