コード例 #1
0
ファイル: Table.cs プロジェクト: suryapratap/reportingcloud
        internal void RunPageHeader(Pages pgs, Row frow, bool bFirst, TableGroup stoptg)
        {
            // Do the table headers
            bool isEmpty = pgs.CurrentPage.IsEmpty();

            if (_Header != null && (_Header.RepeatOnNewPage || bFirst))
            {
                _Header.RunPage(pgs, frow);
                if (isEmpty)
                {
                    pgs.CurrentPage.SetEmpty();                                 // Consider this empty of data
                }
            }

            if (bFirst)                                                                 // the very first time we'll output the header (and not consider page empty)
            {
                return;
            }

            if (_TableGroups == null)
            {
                pgs.CurrentPage.SetEmpty();                             // Consider this empty of data
                return;
            }

            // Do the group headers
            foreach (TableGroup tg in _TableGroups.Items)
            {
                if (stoptg != null && tg == stoptg)
                {
                    break;
                }
                if (tg.Header != null)
                {
                    if (tg.Header.RepeatOnNewPage)
                    {
                        tg.Header.RunPage(pgs, frow);
                    }
                }
            }

            pgs.CurrentPage.SetEmpty();                         // Consider this empty of data

            return;
        }
コード例 #2
0
ファイル: Table.cs プロジェクト: suryapratap/reportingcloud
        private void RunRecursiveGroupsPage(Pages pgs, TableWorkClass wc)
        {
            List <Row> rows = wc.Data.Data;
            Row        r;

            // Get any header/footer information for use in loop
            Header     header = null;
            Footer     footer = null;
            TableGroup tg     = wc.RecursiveGroup.Parent as TableGroup;

            if (tg != null)
            {
                header = tg.Header;
                footer = tg.Footer;
            }

            bool bHeader = true;

            for (int iRow = 0; iRow < rows.Count; iRow++)
            {
                r = rows[iRow];
                wc.Data.CurrentGroups[0] = r.GroupEntry;
                wc.GroupNestCount        = r.GroupEntry.EndRow - r.GroupEntry.StartRow;
                if (bHeader)
                {
                    bHeader = false;
                    if (header != null)
                    {
                        Page  p      = pgs.CurrentPage;                                         // this can change after running a row
                        float height = p.YOffset + header.HeightOfRows(pgs, r);
                        if (height > pgs.BottomOfPage)
                        {
                            p = RunPageNew(pgs, p);
                            RunPageHeader(pgs, r, false, null);
                            if (!header.RepeatOnNewPage)
                            {
                                header.RunPage(pgs, r);
                            }
                        }
                        else
                        {
                            header.RunPage(pgs, r);
                        }
                    }
                }

                // determine need for group headers and/or footers
                bool  bFooter      = false;
                float footerHeight = 0;

                if (iRow < rows.Count - 1)
                {
                    Row r2 = rows[iRow + 1];
                    if (r.Level > r2.Level)
                    {
                        if (footer != null)
                        {
                            bFooter      = true;
                            footerHeight = footer.HeightOfRows(pgs, r);
                        }
                    }
                    else if (r.Level < r2.Level)
                    {
                        bHeader = true;
                    }
                }

                if (_Details != null)
                {
                    _Details.RunPage(pgs, wc.Data, iRow, iRow, footerHeight);
                }

                // and output the footer if needed
                if (bFooter)
                {
                    footer.RunPage(pgs, r);
                }
            }
            if (footer != null)
            {
                footer.RunPage(pgs, rows[rows.Count - 1] as Row);
            }
        }