Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DEVEXPRESS - xtrareport - page break

I have a datatable with more than 300 rows. I want each page to present only 10 rows in it. I want to force the xtrareport to break after 10 rows.

Any idea on how this is done ?

like image 893
Fares Avatar asked Mar 14 '12 10:03

Fares


2 Answers

You can force a page break on certain conditions. This page has an example at the bottom.

Hi Cary,

To accomplish this task you can either add a GroupFooter band and set the GroupFooter.PageBreak to AfterBand. or put a XRPageBreak control, handle the Detail.BeforePrint and adjust the visibility of the XRPageBreak as you need. To get processing row you need to use the XtraReport.GetCurrentRow() method. Please try this solution, and let us know the results.

Thanks,
Andrew

like image 134
ta.speot.is Avatar answered Oct 21 '22 22:10

ta.speot.is


you need to create a Repport Merging.

  • The first step is to create a main Repport.
  • Then, create a second Repport every 10 rows.
  • And, add this second Repport in the main Repport.

here is an example :

private void printInvoicesButton_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
        int[] selection = this.ordersGridView.GetSelectedRows();
        XtraReport reportMerge = new XtraReport();
        reportMerge.CreateDocument();

        IList<XtraReport> reportList = new List<XtraReport>();

        // Create a report.
        //invoiceReport report = new invoiceReport();

        for (int j = 0; j < selection.Length; j++)
        {


            XtraReport report = new XtraReport();
            string filePath = @"Reports/invoiceReport1.repx";
            report.LoadLayout(filePath);


            InvoiceData invoice = new InvoiceData();

            for (int i = 0; i < DataRepository.Orders.Orders.Count; i++)
            {
                if (
                    ordersGridView.GetRowCellValue(selection[j], "InvoiceCode").Equals(
                        DataRepository.Orders.Orders[i].InvoiceCode))
                {
                    BindingSource dataSource = new BindingSource();

                    invoice = InvoiceData.AdaptFrom(DataRepository.Orders.Orders[i], DataRepository.Orders,
                                                    DataRepository.Products.Products,
                                                    DataRepository.ProductOptionMaster,
                                                    DataRepository.ProductOptionDataSet,
                                                    DataRepository.CustomerShippingAddresses,
                                                    DataRepository.Customers.UserMaster,
                                                    DataRepository.AttributesData.Product_Attributes);

                    dataSource.Add(invoice);

                    report.DataSource = dataSource;
                    //report.ShowPreview();
                    report.CreateDocument();

                }
            }
            reportList.Add(report);
        }

        for(int i=0;i<reportList.Count;i++)
        {
            reportMerge.Pages.AddRange(reportList[i].Pages);
        }

        // Show the report's preview.
        reportMerge.ShowPreviewDialog();            

    }
like image 5
Mustafa E. Avatar answered Oct 21 '22 22:10

Mustafa E.