package Base
{
import mx.controls.DataGrid;
import flash.system.System;
public class Common
{
public function Common()
{
}
//将DataGrid数据复制到剪贴板
public static function CopyGridData(grid:DataGrid):String{
var str:String='';
//循环DataGrid行以制表符
for(var i:int=0;i<grid.columns.length;i++){
str+=grid.columns[i].headerText+"\t";
}
str+="\n";
for(var j:int=0;j<grid.dataProvider.length;j++){
for(var k:int=0;k<grid.columns.length;k++){
if(k==grid.columns.length-1){
str+=grid.dataProvider.getItemAt(j)[grid.columns[k].dataField]+"\t\n";
}else{
str+=grid.dataProvider.getItemAt(j)[grid.columns[k].dataField]+"\t";
}
}
}
System.setClipboard(str);
return str;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import Base.Common;
import mx.collections.ArrayCollection;
[Bindable] private var arrcol:ArrayCollection
=new ArrayCollection([{id:"1",cname:"wp",ename:"wp"},{id:"2",cname:"wang",ename:"wang"}]);
private function copyData():void{
var str:String=Common.CopyGridData(grid);
if(str!=null&&str.length>1){
Alert.show('数据已复制打破系统剪贴板');
}else{
Alert.show('数据未复制');
}
}
]]>
</mx:Script>
<mx:VBox>
<mx:DataGrid id="grid" dataProvider="{arrcol}">
<mx:columns>
<mx:DataGridColumn headerText="id" dataField="id"/>
<mx:DataGridColumn id="dc2" headerText="cname" dataField="cname"/>
<mx:DataGridColumn id="dc4" headerText="ename" dataField="ename"/>
</mx:columns>
</mx:DataGrid>
<mx:Button click="copyData()" label="复制数据"/>
</mx:VBox>
</mx:Application>