2012-02-01 54 views
0

我试图打印一个多页FlexPrintJob,它包含在第一页上,几个标签,然后PrintDataGrid。它全部打印,除了PrintDataGrid只打印所有页面的一半页面。Flex - FlexPrintJob如何正确地打印一组字段和PrintDataGrid?

我知道它与我在第1页上打印的标签有关,因为将它们取走或隐藏它们可修复问题,并且网格会打印整页所有页面。

我已经尝试过各种容器围绕网格和标签,包括VBox,VGroup,Group,并为一些容器指定height =“100%”的不同组合。

是不是可以打印第1页上的变量/标签的半页,然后在同一页面上启动数据网格(半页值),然后在后续页面上转到完整页面?

这里是我的打印作业代码:

var printJob:FlexPrintJob = new FlexPrintJob(); 
    if (printJob.start()) { 
var thePrintView:printViewEventUser = new printViewEventUser(); // Create a FormPrintView control as a child of the application. 
     addElement(thePrintView); 
         thePrintView.width=printJob.pageWidth; 
         thePrintView.height=printJob.pageHeight; 
         thePrintView.parentEncounter=parentEncounter; //pass in my object for the labels to print 
         thePrintView._currentRec=_currentRec; //pass in my object for the labels to print 

         thePrintView.myDataGrid.dataProvider = bedSearchEditList._recs; 
         thePrintView.showPage("single"); // Create a single-page image. 
         if(!thePrintView.myDataGrid.validNextPage) // If the print image's DataGrid can hold all the data provider's rows, add the page to the print job. 
         { 
          printJob.addObject(thePrintView,FlexPrintJobScaleType.NONE); 
         } 
         else // Otherwise, the job requires multiple pages. 
         { 
          thePrintView.showPage("first"); // Create the first page and add it to the print job. 
          printJob.addObject(thePrintView); 
          thePrintView.pageNumber++; 
          while(true) //queue pages 
          { 
           thePrintView.myDataGrid.nextPage(); // Move the next page of data to the top of the PrintDataGrid. 
           thePrintView.showPage("last"); // Try creating a last page. 
           if(!thePrintView.myDataGrid.validNextPage) // If the page holds the remaining data, or if the last page was completely filled by the last grid data, queue it for printing. Test if there is data for another PrintDataGrid page. 
           { 
            printJob.addObject(thePrintView,FlexPrintJobScaleType.MATCH_WIDTH); // This is the last page; queue it and exit the print loop. 
            break; 
           } 
           else // This is not the last page. Queue a middle page. 
           { 
            thePrintView.showPage("middle"); 
            printJob.addObject(thePrintView,FlexPrintJobScaleType.MATCH_WIDTH); 
            thePrintView.pageNumber++; 
           } 
          } 
         } 

         removeElement(thePrintView); 

       } 
       printJob.send(); // Send the job to the printer. 

我打印视图对象基本上只是一个在我的标签,然后PrintDataGrid会。

回答

0

如果我没有记错我固定在过去的类似情况指定minHeight属性的到我的MX:PrintDataGrid会这样的..

<mx:PrintDataGrid id="printViewDataGrid" width="100%" minHeight="500"> 
... 
</mx:PrintDataGrid> 

祝你好运!

相关问题