<p><span style="color: rgb(51, 51, 51);">这个demo是对上一个DataGrid demo的修改,目的是为了实现控制checkBox itemrender全选所有项,然后删除所有项。</span></p><p><span style="color: rgb(51, 51, 51);">在 上一个版本中,我在ICheckBox.as的set data function中根据当前value选中checkbox并且将选中的value push到selectedItems array中,这里有一个问题是grid不会初始化被scrollbar 隐藏的项 (谢谢lianyedie找到问题),所以会导致一个问题,没有显示部分的选中的item没有被正确加入到selectedItems array中。这个版本中我主要简化了iCheckBox.as, 不在setvlaue中设置选中项(同时也防止了重复插入选中项的问题)。</span></p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>
<span style="color: rgb(51, 51, 51);">Demo内容:</span></p><p>
<span style="color: rgb(51, 51, 51);">1. 点击check box选中item,或点击全选,选中所有项。
2. 点击删除选中项,选中项的 status将变成 Deleted.</span></p><p><span style="color: rgb(51, 51, 51);">iCheckBox.as</span></p><p><span style="color: rgb(51, 51, 51);">package
{
import flash.events.Event;</span></p><p><span style="color: rgb(51, 51, 51);">import mx.controls.CheckBox;
import mx.core.Application;</span></p><p><span style="color: rgb(51, 51, 51);">public class iCheckBox extends CheckBox
{
private var currentData:Object; //保存当前一行值的对象</span></p><p><span style="color: rgb(51, 51, 51);">public function iCheckBox()
{
 super();
 this.addEventListener(Event.CHANGE,changeHandle)
}</span></p><p><span style="color: rgb(51, 51, 51);">override public function set data(value:Object):void{
 this.selected = value.action.toString() == "true"?true:false;
 this.currentData = value; //保存整行的引用
}
//点击check box时,根据状况向selectedItems array中添加当前行的引用,或者从array中移除
private function changeHandle(e:Event):void{
 var itemArray:Array = Application.application.selectedItems
 this.currentData.action = this.selected.toString()
 if(this.selected){
 itemArray.push(this.currentData)
 }else{
 for(var i:int = 0; i<itemArray.length; i++){
 if(itemArray == this.currentData){
 itemArray.splice(i,1)
 }
}
 }
}</span></p><p><span style="color: rgb(51, 51, 51);">}
}</span></p><p><span style="color: rgb(51, 51, 51);">GridDemo.mxml</span></p><p><span style="color: rgb(51, 51, 51);">//从dataProvider中将选中的项放入 selectedItems array
private function initSelectedItems():void{
 for(var i:int=0; i <idata.length; i++){
 if(idata.action.toString() == "true"){
 this.selectedItems.push(idata)
 }
 }
}</span></p><p>图片 1(6).png</p>>