예제 #1
0
        /// <summary>
        /// Build the Pages for this report.
        /// </summary>
        /// <returns></returns>
        public Pages BuildPages()
        {
            PageNumber = 1;                     // reset page numbers
            TotalPages = 1;

            Pages pgs = new Pages(this);

            pgs.PageHeight = _Report.PageHeight.ToPoints();
            pgs.PageWidth  = _Report.PageWidth.ToPoints();
            try
            {
                Page p = new Page(1);                                           // kick it off with a new page
                pgs.AddPage(p);

                // Create all the pages
                _Report.Body.RunPage(pgs);

                if (pgs.LastPage.IsEmpty() && pgs.PageCount > 1)                // get rid of extraneous pages which
                {
                    pgs.RemoveLastPage();                                       //   can be caused by region page break at end
                }
                // Now create the headers and footers for all the pages (as needed)
                if (_Report.PageHeader != null)
                {
                    _Report.PageHeader.RunPage(pgs);
                }
                if (_Report.PageFooter != null)
                {
                    _Report.PageFooter.RunPage(pgs);
                }
                // clear out any runtime clutter
                foreach (Page pg in pgs)
                {
                    pg.ResetPageExpressions();
                }

                pgs.SortPageItems();             // Handle ZIndex ordering of pages
            }
            catch (Exception e)
            {
                rl.LogError(8, "Exception running report\r\n" + e.Message + "\r\n" + e.StackTrace);
            }
            finally
            {
                pgs.CleanUp();                          // always want to make sure we clean this up since
                _Cache = new RCache();
            }

            return(pgs);
        }
예제 #2
0
        internal void RunPage(IPresent ip)
        {
            Pages pgs = new Pages(ip.Report());

            try
            {
                Page p = new Page(1);                                           // kick it off with a new page
                pgs.AddPage(p);

                // Create all the pages
                _Body.RunPage(pgs);

                if (pgs.LastPage.IsEmpty() && pgs.PageCount > 1)                // get rid of extraneous pages which
                {
                    pgs.RemoveLastPage();                                       //   can be caused by region page break at end
                }
                // Now create the headers and footers for all the pages (as needed)
                if (_PageHeader != null)
                {
                    _PageHeader.RunPage(pgs);
                }
                if (_PageFooter != null)
                {
                    _PageFooter.RunPage(pgs);
                }

                pgs.SortPageItems();             // Handle ZIndex ordering of pages

                ip.RunPages(pgs);
            }
            finally
            {
                pgs.CleanUp();                          // always want to make sure we clean this up since
                if (_DataSourcesDefn != null)
                {
                    _DataSourcesDefn.CleanUp(pgs.Report);                       // ensure datasets are cleaned up
                }
            }

            return;
        }