Flex 打印DataGrid内容

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)}"/>



原文地址:https://www.cnblogs.com/mobile/p/509800.html