Flex经验总结--给Grid加按钮和事件

Flex在自定义控件方面非常方便,但是由于提供的控件非常不易用,需要自行处理大量的事件和进行扩展

UI代码

 <mx:DataGrid dataProvider="{Datas}" itemFocusOut="PoGrid_ItemFocusOut(event);"
      keyUp="PoGrid_KeyUp(event);"   keyDown="PoGrid_KeyDown(event);"   
   editable="true"      dropEnabled="false" id="PoGrid"  width="766" textAlign="left"  
    shadowDirection="center" shadowDistance="1" dropShadowEnabled="true" height="90">

<mx:DataGridColumn headerText="Operate" width="60"   editable="false"  sortable="false" >
   <mx:itemRenderer>
    <mx:Component>
     <mx:Button label="Item"  click="outerDocument.OpenItem();" ></mx:Button>
    </mx:Component>
   </mx:itemRenderer>
   </mx:DataGridColumn>

 </mx:DataGrid>

下面的事件是Grid中每个按钮触发的事件

public function OpenItem():void
  {
    }

//设置一个变量获得当前索引值

private function PoGrid_KeyDown(event:KeyboardEvent):void
  {
   var item:Object=PoGrid.selectedItem;
   if(item==null)return;   
   if(this.PoGrid.editedItemPosition.columnIndex==PoGrid.columnCount-1)
   {
    if(event.keyCode== Keyboard.ENTER||event.keyCode==Keyboard.TAB )
    {
     PoKeyIndex=Datas.getItemIndex(item); 
    }
   }
  }

//加入在Gird最后一行按下回车或者tab键时,自动增加新的一行

private function PoGrid_KeyUp(event:KeyboardEvent):void
  {
   var item:Object=PoGrid.selectedItem;
   if(item==null)return;
   if(event.keyCode==Keyboard.UP)
   {
    PoGrid.selectedIndex=PoGrid.selectedIndex-1;
   }
   else if(event.keyCode==Keyboard.DOWN)
   {
    PoGrid.selectedIndex=PoGrid.selectedIndex+1;    
   }
   if(this.PoGrid.editedItemPosition.columnIndex==PoGrid.columnCount-1)
   {
    if(event.keyCode== Keyboard.ENTER||event.keyCode==Keyboard.TAB )
    { 
     var i:int=Datas.getItemIndex(item);
     if(i==Datas.length-1)
     {
      if(PoKeyIndex==Datas.getItemIndex(item))
      {
       Datas.addItem({ID:UIDUtil.createUID(),No:String(Datas.length+1),PO:item.PO,Item:"",
        ItemDescription:"",Color:"",Size:"",Volume:0.00,Weight:0.00,Cartons:0.00,Units:0.00,
        Vendor:item.Vendor,Container:item.Container});
      }
     }
    }
   }
  }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值