读书人

在DataGrid中兑现CheckBox

发布时间: 2012-11-23 22:54:33 作者: rapoo

在DataGrid中实现CheckBox
最近在flex项目中,实现了该功能,share下:

xxxx.mxml



TCheckBoxHeaderRender.as:

 public class TCheckBoxItemRender extends TCheckBox{          private var currentData:Object;        private var model:TModelLocator = TModelLocator.getInstance();                   public function TCheckBoxItemRender(){              super();              this.showMiddle = true;            this.addEventListener(MouseEvent.CLICK,onClickCheckBox);                this.addEventListener(Event.CANCEL,onClickCheckBox);                                                }                          override public function set data(value:Object):void{                      this.selected = value.isSelected;              this.currentData = value;         }                                          private function onClickCheckBox(e:Event):void{                               var dg:DataGrid = DataGrid(listData.owner);            var column:TCheckBoxColumn = dg.columns[listData.columnIndex];                                                           this.currentData.isSelected = this.selected;            if(this.selected){                  column.selectItems.push(this.currentData);                              }else{                  for(var i:int = 0; i<column.selectItems.length; i++){                      if(column.selectItems[i] == this.currentData){                          column.selectItems.splice(i,1)                      }                  }              }                                 if(column.isDisable) {column.canRemove = false;column.canEdit =false;}else{if(column.selectItems.length==1) {                        column.canRemove = true;                        column.canEdit = true;                        }else if(column.selectItems.length>1) {                        column.canEdit = false;            column.canRemove = true;            }else {            column.canEdit = false;            column.canRemove = false;            }}changeCheckBoxHeader();                                                             }                  private function changeCheckBoxHeader():void{        var dg:DataGrid = DataGrid(listData.owner);                var dgDataArr:ArrayCollection = dg.dataProvider as  ArrayCollection;          var totalColumnSize:int =dgDataArr.length;                var allSelected=true;                var selectColumnArr:Array = dg.columns[0].selectItems;        var selectColumnSize:int = selectColumnArr.length;                if(selectColumnSize!=totalColumnSize){        allSelected = false;        }             var headerColumn :TCheckBoxColumn = dg.columns[0];                if(allSelected){         headerColumn.cloumnSelected=true;                }else{        headerColumn.cloumnSelected=false;          }                dgDataArr.refresh();        }    } 

读书人网 >Web前端

热点推荐