• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
Locked
0

PrintDataGrid printing only half the page

Explorer ,
Jun 22, 2010 Jun 22, 2010

Copy link to clipboard

Copied

Hello,

I have a problem printing my report with PrintDataGrid. I just copied and paste the sample code form this site but it seems to have a problem. The print out in the paper is only half and jumps to another page. 1 to 6 row is on the first page and the rest is on the next page which supposed to be on a single page. I'm asking for your help finding ways to make it print correctly.

here i have the code:

FormSalesTransaction.mxml

<fx:Script>           <![CDATA[                import mx.core.*                                          // Declare and initialize the variables used in the component.                     // The application sets the actual prodTotal value.                [Bindable]                public var pageNumber:Number = 1;                [Bindable]                public var prodTotal:Number = 0;                                // Control the page contents by selectively hiding the header and                // footer based on the page type.                public function showPage(pageType:String):void                {                     if(pageType == "first" || pageType == "middle")                     {                          // Hide the footer.                          footer.includeInLayout=false;                          footer.visible = false;                     }                     if(pageType == "middle" || pageType == "last")                     {                          // The header won't be used again; hide it.                          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();                }           ]]>      </fx:Script>            <!-- The template for the printed page,      with the contents for all pages. -->      <mx:VBox width="90%" horizontalAlign="left">           <mx:Label text="Page {pageNumber}"/>      </mx:VBox>      <MyComp:FormPrintHeader id="header"/>            <mx:PrintDataGrid id="myDataGrid"                            height="100%"                            width="100%"                            fontSize="7"                            wordWrap="true"                            variableRowHeight="true"                            fontFamily="Lucida Console" >           <!-- Specify the columns to ensure that their order is correct. -->           <mx:columns>                <mx:DataGridColumn headerText="Invoice" dataField="InvoiceNo" width="65"/>                <mx:DataGridColumn headerText="Customer" dataField="CustomerName" width="100"/>                <mx:DataGridColumn headerText="Model" dataField="ModelNo" width="70"/>                <mx:DataGridColumn headerText="Category" dataField="CategoryCode" width="70"/>                          <mx:DataGridColumn headerText="Price" dataField="Price" width="80"/>                <mx:DataGridColumn headerText="Qty" dataField="Quantity" width="35"/>                                    <mx:DataGridColumn headerText="Cash" dataField="Cash" width="80"/>                <mx:DataGridColumn headerText="Dollar" dataField="Dollar" width="80"/>                <mx:DataGridColumn headerText="Cr Card" dataField="CreditCard" width="80"/>                <mx:DataGridColumn headerText="B Share" dataField="Bankshare" width="80"/>                <mx:DataGridColumn headerText="W Tax" dataField="WTax" width="80"/>                <mx:DataGridColumn headerText="Lay Dep" dataField="LayawayDP" width="80"/>                <mx:DataGridColumn headerText="Lay Bal" dataField="LayawayBal" width="80"/>                <mx:DataGridColumn headerText="Check" dataField="Check" width="80"/>                <mx:DataGridColumn headerText="Misc" dataField="Misc" width="80"/>                <mx:DataGridColumn headerText="Remarks" dataField="Remarks"/>                <mx:DataGridColumn headerText="Lay Pay" dataField="LayawayPayment" width="80"/>           </mx:columns>      </mx:PrintDataGrid>

and the way i call it from Report.mxml:

var printJob:FlexPrintJob = new FlexPrintJob();                      if (printJob.start()) {         var thePrintView:FormSalesTransaction = new FormSalesTransaction();      addElement(thePrintView);                                thePrintView.width=printJob.pageWidth;      thePrintView.height=printJob.pageHeight;                                                    thePrintView.prodTotal = prodTotal;                                thePrintView.myDataGrid.dataProvider = salesTransaction;                                thePrintView.validateNow();                                if(!thePrintView.myDataGrid.validNextPage)      {           thePrintView.showPage("single");           printJob.addObject(thePrintView, FlexPrintJobScaleType.MATCH_WIDTH);      }      else      {           thePrintView.showPage("first");           printJob.addObject(thePrintView, FlexPrintJobScaleType.MATCH_WIDTH);           thePrintView.pageNumber++;                                          while(true)           {                thePrintView.myDataGrid.nextPage();                                                    thePrintView.showPage("last");                                                     if(!thePrintView.myDataGrid.validNextPage)                {                     printJob.addObject(thePrintView, FlexPrintJobScaleType.MATCH_WIDTH);                     break;                }                else                {                     thePrintView.showPage("middle");                     printJob.addObject(thePrintView, FlexPrintJobScaleType.MATCH_WIDTH);                     thePrintView.pageNumber++;                }           }      }      removeElement(thePrintView); }           printJob.printAsBitmap = false;                     printJob.send();

Here is the output when I print the report:

printout.jpg

I hope you could have some time to help me.

Thankz a lot.

Views

938

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Explorer , Jun 23, 2010 Jun 23, 2010

Can you check and see if the variableRowHeight attribute makes any difference if set to false?

It looks like a container issue.

Votes

Translate

Translate
Explorer ,
Jun 23, 2010 Jun 23, 2010

Copy link to clipboard

Copied

Can you check and see if the variableRowHeight attribute makes any difference if set to false?

It looks like a container issue.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jun 23, 2010 Jun 23, 2010

Copy link to clipboard

Copied

LATEST

Great! It solves the problem. Thank you so much CrazyMerlin. I set variableRowHeight to true because of that print problem on the last row of every page.

Thankz again man.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines