写了一个简单的Demo,目的是帮助大家初步了解itemrender的使用,以及如何对多行数据同时操作。
Demo操作过程。
1. DataGrid为3列,第一列是check box.
2. 点击选中多行的check box.
3. 点击删除选中行,所有被选中的行的第三列的值改变为 Deleted.
GridDemo.mxml
public var selectedItems:Array = new Array(); //保存选中行
//将数组中的行的status 改为Delete,并且刷新Grid
private function removeSelectedItems():void{
for(var i:int = 0; i
<mx:DataGrid id="grid" dataProvider="{idata}">
<mx:columns>
<mx:DataGridColumn headerText="删除" dataField="action" itemRenderer="{new ClassFactory(iCheckBox)}" />
<mx:DataGridColumn headerText="姓名" dataField="name" />
<mx:DataGridColumn headerText="状态" dataField="status" />
</mx:columns>
</mx:DataGrid>
iCheckBox.as (ItemRender)
override public function set data(value:Object):void{
if(value.action.toString() == "true"){ //如果action为true,选中check box
this.selected = true;
Application.application.selectedItems.push(value) //将选中的数据保存起来
}else{
this.selected = 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[i] == this.currentData){
itemArray.splice(i,1)
}
}
}
}
0 评论:
发表评论