需要用到mx:itemRenderer,一般来说有二种方法
1、重写data方法
<mx:itemRenderer>
<mx:Component>
<mx:HBox width="100%" horizontalScrollPolicy="off">
<mx:Script>
<![CDATA[
import mx.controls.Button;
override public function set data(data:Object):void {
this.removeAllChildren();
var b1:Button = new Button();
b1.label = "下载";
b1.buttonMode = true;
b1.useHandCursor = true;
b1.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void {
outerDocument.downloadFile(data.url);
});
this.addChild(b1);
if (outerDocument.isEditable) {
var b2:Button = new Button();
b2.label = "删除";
b2.buttonMode = true;
b2.useHandCursor = true;
b2.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void {
outerDocument.deleteFile(data.url);
});
this.addChild(b2);
}
}
]]>
</mx:Script>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
2、利用creationComplete
<mx:itemRenderer>
<mx:Component>
<mx:HBox creationComplete="init(data as Object)" width="100%">
<mx:Script>
<![CDATA[
import mx.controls.Button;
private var url:String;
private function init(data:Object):void {
this.url = data.url.toString();
var b1:Button = new Button();
b1.label = "下载";
b1.buttonMode = true;
b1.useHandCursor = true;
b1.height = this.height;
b1.addEventListener(MouseEvent.CLICK, downloadOperationHandler);
this.addChild(b1);
if (outerDocument.isEditable) {
var b2:Button = new Button();
b2.label = "删除";
b2.buttonMode = true;
b2.useHandCursor = true;
b2.height = this.height;
b2.addEventListener(MouseEvent.CLICK, deleteOperationHandler);
this.addChild(b2);
}
}
private function downloadOperationHandler(event:MouseEvent):void {
outerDocument.downloadFile(url);
}
private function deleteOperationHandler(event:MouseEvent):void {
outerDocument.deleteFile(url);
}
]]>
</mx:Script>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
上述二种方法,如果datagrid没有排序功能,那都可以用,但如果有排序,就只能用第一种,第二种用引起数据错位
1、重写data方法
<mx:itemRenderer>
<mx:Component>
<mx:HBox width="100%" horizontalScrollPolicy="off">
<mx:Script>
<![CDATA[
import mx.controls.Button;
override public function set data(data:Object):void {
this.removeAllChildren();
var b1:Button = new Button();
b1.label = "下载";
b1.buttonMode = true;
b1.useHandCursor = true;
b1.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void {
outerDocument.downloadFile(data.url);
});
this.addChild(b1);
if (outerDocument.isEditable) {
var b2:Button = new Button();
b2.label = "删除";
b2.buttonMode = true;
b2.useHandCursor = true;
b2.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void {
outerDocument.deleteFile(data.url);
});
this.addChild(b2);
}
}
]]>
</mx:Script>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
2、利用creationComplete
<mx:itemRenderer>
<mx:Component>
<mx:HBox creationComplete="init(data as Object)" width="100%">
<mx:Script>
<![CDATA[
import mx.controls.Button;
private var url:String;
private function init(data:Object):void {
this.url = data.url.toString();
var b1:Button = new Button();
b1.label = "下载";
b1.buttonMode = true;
b1.useHandCursor = true;
b1.height = this.height;
b1.addEventListener(MouseEvent.CLICK, downloadOperationHandler);
this.addChild(b1);
if (outerDocument.isEditable) {
var b2:Button = new Button();
b2.label = "删除";
b2.buttonMode = true;
b2.useHandCursor = true;
b2.height = this.height;
b2.addEventListener(MouseEvent.CLICK, deleteOperationHandler);
this.addChild(b2);
}
}
private function downloadOperationHandler(event:MouseEvent):void {
outerDocument.downloadFile(url);
}
private function deleteOperationHandler(event:MouseEvent):void {
outerDocument.deleteFile(url);
}
]]>
</mx:Script>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
上述二种方法,如果datagrid没有排序功能,那都可以用,但如果有排序,就只能用第一种,第二种用引起数据错位