Esempio n. 1
0
        private ExporterCollection ConvertInternal(ExporterCollection mylist)
        {
            Point            currentPosition = new Point(base.SectionBounds.DetailStart.X, base.SectionBounds.DetailStart.Y);
            Point            dataAreaStart   = new Point(baseTable.Items[0].Location.X, baseTable.Items[0].Location.Y + currentPosition.Y);
            ISimpleContainer headerContainer = null;

            int defaultLeftPos = PrintHelper.DrawingAreaRelativeToParent(this.baseTable.Parent, this.baseTable).Left;

            this.baseTable.Items.SortByLocation();

            foreach (ISimpleContainer simpleContainer in this.baseTable.Items)
            {
                if (simpleContainer.Items.Count > 0)
                {
                    simpleContainer.Location = new Point(simpleContainer.Location.X + defaultLeftPos, simpleContainer.Location.Y);
                    simpleContainer.Parent   = (BaseReportItem)this.baseTable;
                    base.SaveSize(new Size(simpleContainer.Size.Width, simpleContainer.Size.Height));
                    // Header/FooterRow

                    if (PrintHelper.IsTextOnlyRow(simpleContainer))
                    {
                        headerContainer = simpleContainer;
                        currentPosition = base.BaseConvert(mylist, headerContainer, defaultLeftPos, currentPosition);
                    }

                    else
                    {
                        // DataRegion
                        base.SaveSize(simpleContainer.Size);
                        do
                        {
                            //
                            BaseSection section = this.baseTable.Parent as BaseSection;
                            section.Location = new Point(section.Location.X, section.SectionOffset);
                            base.FillAndLayoutRow(simpleContainer);

                            if (PrintHelper.IsPageFull(new Rectangle(new Point(simpleContainer.Location.X, currentPosition.Y), simpleContainer.Size), base.SectionBounds))
                            {
                                base.FirePageFull(mylist);
                                mylist.Clear();

                                currentPosition = base.BaseConvert(mylist, headerContainer,
                                                                   defaultLeftPos,
                                                                   base.SectionBounds.ReportHeaderRectangle.Location);
                            }

                            currentPosition      = base.BaseConvert(mylist, simpleContainer, defaultLeftPos, currentPosition);
                            simpleContainer.Size = base.RestoreSize;
                        }while (base.DataNavigator.MoveNext());
                        //Allway's reset the DataNavigator
                        base.DataNavigator.Reset();
                        base.DataNavigator.MoveNext();
                        SectionBounds.ReportFooterRectangle = new Rectangle(SectionBounds.ReportFooterRectangle.Left,
                                                                            currentPosition.Y,
                                                                            SectionBounds.ReportFooterRectangle.Width,
                                                                            SectionBounds.ReportFooterRectangle.Height);
                    }
                }
            }
            return(mylist);
        }
Esempio n. 2
0
        private ExporterCollection ConvertInternal(ExporterCollection exporterCollection)
        {
            BaseSection section = table.Parent as BaseSection;

            ISimpleContainer headerRow     = null;
            Point            dataAreaStart = new Point(table.Items[0].Location.X, table.Items[0].Location.Y + base.CurrentPosition.Y);

            base.CurrentPosition = new Point(PrintHelper.DrawingAreaRelativeToParent(this.table.Parent, this.table).Location.X,
                                             base.SectionBounds.DetailArea.Top);

            base.DefaultLeftPosition = base.CurrentPosition.X;

            this.table.Items.SortByLocation();

            // Header

            var  simpleContainer = table.Items[0] as ISimpleContainer;
            Size containerSize   = Size.Empty;

            if (simpleContainer.Items.Count > 0)
            {
                simpleContainer.Location = new Point(simpleContainer.Location.X, simpleContainer.Location.Y);
                simpleContainer.Parent   = (BaseReportItem)this.table;

                base.SaveSectionSize(section.Size);
                containerSize = simpleContainer.Size;

                if (PrintHelper.IsTextOnlyRow(simpleContainer))
                {
                    headerRow = simpleContainer;
                    base.PrepareContainerForConverting(section, headerRow);
                    base.CurrentPosition = ConvertContainer(exporterCollection, headerRow, base.DefaultLeftPosition, base.CurrentPosition);
                }

                GroupHeader row = table.Items[1] as GroupHeader;

                if (row != null)
                {
                    //grouped
                    do
                    {
                        // GetType child navigator
                        IDataNavigator childNavigator = base.DataNavigator.GetChildNavigator;

                        base.Evaluator.SinglePage.IDataNavigator = childNavigator;
                        // Convert Grouping Header

                        base.CurrentPosition = ConvertGroupHeader(exporterCollection, section, base.CurrentPosition);

                        childNavigator.Reset();
                        childNavigator.MoveNext();

                        //Convert children
                        if (childNavigator != null)
                        {
                            do
                            {
                                StandardPrinter.AdjustBackColor(simpleContainer);
                                simpleContainer = table.Items[2] as ISimpleContainer;
                                containerSize   = simpleContainer.Size;

                                FillRow(simpleContainer, childNavigator);
                                FireRowRendering(simpleContainer, childNavigator);
                                PrepareContainerForConverting(section, simpleContainer);
                                base.CurrentPosition = ConvertStandardRow(exporterCollection, simpleContainer);

                                simpleContainer.Size = containerSize;
                                CheckForPageBreak(section, simpleContainer, headerRow, exporterCollection);
                            }while (childNavigator.MoveNext());

                            // GroupFooter
                            base.ConvertGroupFooter(table, exporterCollection);
                            base.PageBreakAfterGroupChange(section, exporterCollection);

                            base.Evaluator.SinglePage.IDataNavigator = base.DataNavigator;
                        }
                    }while (base.DataNavigator.MoveNext());
                }

                else
                {
                    // No Grouping at all

                    simpleContainer = table.Items[1] as ISimpleContainer;
                    base.SaveSectionSize(section.Size);
                    containerSize = simpleContainer.Size;

                    do
                    {
                        PrintHelper.AdjustSectionLocation(section);
                        CheckForPageBreak(section, simpleContainer, headerRow, exporterCollection);

                        FillRow(simpleContainer, base.DataNavigator);
                        FireRowRendering(simpleContainer, base.DataNavigator);
                        base.PrepareContainerForConverting(section, simpleContainer);

                        base.CurrentPosition = ConvertStandardRow(exporterCollection, simpleContainer);
                        simpleContainer.Size = containerSize;
                        section.Size         = base.RestoreSectionSize;
                    }while (base.DataNavigator.MoveNext());
                    base.DataNavigator.Reset();
                    base.DataNavigator.MoveNext();
                    SectionBounds.ReportFooterRectangle = new Rectangle(SectionBounds.ReportFooterRectangle.Left,
                                                                        base.CurrentPosition.Y,
                                                                        SectionBounds.ReportFooterRectangle.Width,
                                                                        SectionBounds.ReportFooterRectangle.Height);
                }
            }
            return(exporterCollection);
        }