您的位置:首页 > 其它

Flex 打印DataGrid内容

2006-09-20 16:40 435 查看
FromPrintView.mxml

<?xml version="1.0"?>
<!-- Custom control to print the DataGrid control on multiple pages. -->

<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" backgroundColor="#FFFFFF"
paddingTop="50" paddingBottom="50" paddingLeft="50" paddingRight="50" height="168"
width="546">

<mx:Script>
<![CDATA[
import mx.core.*
import mx.collections.ArrayCollection;
[Bindable]
public var pageNumber:Number = 1;
[Bindable]
public var prodTotal:Number = 0;

import mx.printing.*;
public static var footerHeight:Number = 20;
public static var prodIndex:Number;
public static var prodTotal:Number = 0;

public static function doPrint(datap:Object):void {
var printJob:FlexPrintJob = new FlexPrintJob();
if (printJob.start()) {
var thePrintView:FormPrintView = new FormPrintView();
Application.application.addChild(thePrintView);
thePrintView.width=printJob.pageWidth;
thePrintView.height=printJob.pageHeight;
thePrintView.prodTotal = (datap as ArrayCollection).length;
thePrintView.printDataGrid.dataProvider = datap; //设置数据v
thePrintView.showPage("single");
if(!thePrintView.printDataGrid.validNextPage){
printJob.addObject(thePrintView);
}
else{
thePrintView.showPage("first");
printJob.addObject(thePrintView);
thePrintView.pageNumber++;
while(true){
thePrintView.printDataGrid.nextPage();
thePrintView.showPage("last");
if(!thePrintView.printDataGrid.validNextPage) {
printJob.addObject(thePrintView);
break;
}
else{
thePrintView.showPage("middle");
printJob.addObject(thePrintView);
thePrintView.pageNumber++;
}
}
}
Application.application.removeChild(thePrintView);
}
printJob.send();
}

public function showPage(pageType:String):void {
if(pageType == "first" || pageType == "middle") {
footer.includeInLayout=false;
footer.visible = false;
}
if(pageType == "middle" || pageType == "last") {
header.includeInLayout=false;
header.visible = false;
}
if(pageType == "last") {
// Show the footer.
footer.includeInLayout=true;
footer.visible = true;
}
//Update the DataGrid layout to reflect the results.
validateNow();
}
]]>
</mx:Script>

<!-- The template for the printed page, with the contents for all pages. -->
<mx:VBox width="100%" horizontalAlign="left">
<mx:Label text="第 {pageNumber}页" color="#9e9e9e"/>
<mx:Label id="header" text="通道申请名录" fontWeight="bold" fontSize="20" textAlign="center" width="100%"/>
<mx:HRule width="100%" height="1" strokeColor="#000000"/>
</mx:VBox>

<mx:PrintDataGrid id="printDataGrid" width="100%" height="100%">
<mx:columns>
<mx:DataGridColumn dataField="姓名" width="150"/>
<mx:DataGridColumn dataField="性别" width="40"/>
<mx:DataGridColumn dataField="学号" width="80"/>
<mx:DataGridColumn dataField="准考证号" width="90"/>
<mx:DataGridColumn dataField="生源地" width="60"/>
<mx:DataGridColumn dataField="身份" width="75"/>
<mx:DataGridColumn dataField="户口" width="75"/>
<mx:DataGridColumn dataField="部门" width="100"/>
<mx:DataGridColumn dataField="财务处是否办理" headerText="是否办理"/>
</mx:columns>
</mx:PrintDataGrid>
<mx:VBox width="100%" horizontalAlign="left" id="footer" >
<mx:Spacer height="100%"/>
<mx:HRule width="100%" height="1" strokeColor="#000000"/>
<mx:Label text="总人数:{prodTotal}"/>
</mx:VBox>

</mx:VBox>

调用方法

<mx:Button label="打印" click="{FormPrintView.doPrint(this.myDataGrid.dataProvider)}"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: