现在的位置: 首页 > 综合 > 正文

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

2013年04月17日 ⁄ 综合 ⁄ 共 2420字 ⁄ 字号 评论关闭

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>

抱歉!评论已关闭.