DataGrid内のCheckboxを特定の数しかチェックさせない

DataGrid内にCheckboxを置き、2件だけチェックを許可するサンプルコード

mxml


 
 
   
    
     
    

   

  

 
 

大事なのはclickでouterDocumentを使用して、外部のメソッドを呼んでいるところ。




ロジック

[Bindable]
private var emplyeeDataList:ArrayCollection = new ArrayCollection();
private var checkedCount:int = 0;
・・・


public function clickDiffListCheckbox():void{
 var checkFlg:Boolean;
 var dto:EmplyeefDto = diffDto:EmplyeefDto (emplyeeDataList.getItemAt(profList.selectedIndex)); 
 
 if(dto.check){
  checkedCount--;
  checkFlg = false;
 }else{
  if(checkedCount < 2 ){
   checkedCount++;
   checkFlg = true;
  }
 } 
 var updateDto:EmplyeefDto = EmplyeefDto (emplyeeDataList.getItemAt(profList.selectedIndex));
 updateDto.check = checkFlg;
 emplyeeDataList.setItemAt(updateDto, profList.selectedIndex);
}

変更を加えるのは、Dataproviderに指定しているAraryCollection。
これを変更し、setItemAtで差し戻すタイミングで変更がDataGridに反映される。



EmplyeeDtoクラス

 public class EmplyeeDto
 {
  private var _check:Boolean;
  private var _age:Number;

  private var _name:String;
  
  public function get check():Boolean {
   return _check;
  }
  public function set check(value:Boolean):void {
   _check = value;
  }
  
  public function get age():Number {
   return _age;
  }
  public function set age(value:Number):void {
   _age = value;
  }
  
  public function get name():String {
   return _name;
  }
  public function set name(value:String):void {
   _name = value;
  }
 }