Flex DataGrid 教程,全选\删除选中项
<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></p>>