From b3c5f17e1e5796736dfe5d2ff1b2b6737d0a82a7 Mon Sep 17 00:00:00 2001 From: peterforstmeier Date: Sun, 14 Nov 2010 20:19:21 +0100 Subject: [PATCH] GroupFooterEvent, cleanup --- .../Project/Events/SectionRenderEventArgs.cs | 13 +++ .../Project/Exporter/BasePager.cs | 18 ++-- .../Exporter/Converters/BaseConverter.cs | 28 ++++-- .../Converters/GroupedRowConverter.cs | 57 +++++------- .../Converters/GroupedTableConverter.cs | 81 ++++++++-------- .../Project/Exporter/DataPageBuilder.cs | 9 ++ .../Project/IReportCreator.cs | 1 + .../Project/Interfaces/IItemConverter.cs | 1 + .../Project/Printing/RenderTable.cs | 92 +++++++++---------- .../Project/ReportViewer/ReportViewer.cs | 16 +++- 10 files changed, 173 insertions(+), 143 deletions(-) diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/SectionRenderEventArgs.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/SectionRenderEventArgs.cs index 24874fe12a..c68d45c5b1 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/SectionRenderEventArgs.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/SectionRenderEventArgs.cs @@ -8,6 +8,19 @@ namespace ICSharpCode.Reports.Core { /// Description of SectionRenderEventArgs. /// + public class GroupFooterEventArgs: EventArgs + { + public GroupFooterEventArgs (GroupFooter groupFooter) + { + GroupFooter = groupFooter; + } + + public GroupFooter GroupFooter {get; private set;} + + } + + + public class GroupHeaderEventArgs: EventArgs { diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs index 4035720337..2e0332d591 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs @@ -23,6 +23,8 @@ namespace ICSharpCode.Reports.Core.Exporter public event EventHandler PageCreated; public event EventHandler SectionRendering; public event EventHandler GroupHeaderRendering; + public event EventHandler GroupFooterRendering; + public event EventHandler RowRendering; #region Constructor @@ -241,6 +243,14 @@ namespace ICSharpCode.Reports.Core.Exporter } + + protected void FireGroupFooterEvent (GroupFooterEventArgs gfea) + { + + EventHelper.Raise(GroupFooterRendering,this,gfea); + } + + protected void FireRowRenderEvent (RowRenderEventArgs rrea) { EventHelper.Raise(RowRendering,this,rrea); @@ -287,14 +297,6 @@ namespace ICSharpCode.Reports.Core.Exporter get { return SinglePage.SectionBounds; } } - -// protected bool PageFull -// { -// get { return pageFull; } -// set { pageFull = value; } -// } -// - #endregion } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs index 3efbd8b7cd..90445c1377 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs @@ -33,6 +33,7 @@ namespace ICSharpCode.Reports.Core.Exporter public event EventHandler PageFull; public event EventHandler SectionRendering; public event EventHandler GroupHeaderRendering; + public event EventHandler GroupFooterRendering; public event EventHandler RowRendering; public BaseConverter(IDataNavigator dataNavigator,ExporterPage singlePage, @@ -92,6 +93,12 @@ namespace ICSharpCode.Reports.Core.Exporter } + protected void FireGroupFooterRendering (GroupFooter groupFooter) + { + GroupFooterEventArgs gfea = new GroupFooterEventArgs(groupFooter); + EventHelper.Raise(GroupFooterRendering,this,gfea); + } + protected void FireSectionRendering (BaseSection section) { @@ -128,31 +135,31 @@ namespace ICSharpCode.Reports.Core.Exporter #region Grouping - protected void ConvertGroupFooter (BaseSection section,ISimpleContainer container,ExporterCollection exporterCollection,int left) + protected void ConvertGroupFooter (BaseSection section,ISimpleContainer container,ExporterCollection exporterCollection) { var footers = BaseConverter.FindGroupFooter(container); if (footers.Count > 0) { -// base.FireGroupHeaderRendering(groupedRows[0]); + FireGroupFooterRendering(footers[0]); Size rowSize = footers[0].Size; - CurrentPosition = ConvertStandardRow(exporterCollection,section,(ISimpleContainer)footers[0],left,CurrentPosition); + CurrentPosition = ConvertStandardRow(exporterCollection,section,(ISimpleContainer)footers[0]); footers[0].Size = rowSize; } } - protected Point ConvertGroupChilds(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition) + protected Point ConvertGroupChilds(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer) { PrepareContainerForConverting(section,simpleContainer); FireRowRendering(simpleContainer); - Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); + Point curPos = BaseConvert(mylist,simpleContainer,DefaultLeftPosition,CurrentPosition); AfterConverting (section,mylist); return curPos; } - protected void ExPageBreakAfterGroupChange(BaseSection section,ISimpleContainer container,ExporterCollection exporterCollection) + protected void PageBreakAfterGroupChange(BaseSection section,ISimpleContainer container,ExporterCollection exporterCollection) { - if (PageBreakAfterGroupChange(section) ) { + if (CheckPageBreakAfterGroupChange(section) ) { if (DataNavigator.HasMoreData) { @@ -162,7 +169,7 @@ namespace ICSharpCode.Reports.Core.Exporter } - private bool PageBreakAfterGroupChange(ISimpleContainer container) + private bool CheckPageBreakAfterGroupChange(ISimpleContainer container) { var groupedRows = BaseConverter.FindGroupHeader(container); if (groupedRows.Count > 0) { @@ -249,6 +256,7 @@ namespace ICSharpCode.Reports.Core.Exporter get {return this.evaluator;} } + protected int DefaultLeftPosition {get;set;} protected void PrepareContainerForConverting(BaseSection section,ISimpleContainer simpleContainer) { @@ -264,12 +272,12 @@ namespace ICSharpCode.Reports.Core.Exporter - protected Point ConvertStandardRow(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition) + protected Point ConvertStandardRow(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer) { var rowSize = simpleContainer.Size; FillRow(simpleContainer); PrepareContainerForConverting(section,simpleContainer); - Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); + Point curPos = BaseConvert(mylist,simpleContainer,DefaultLeftPosition,CurrentPosition); AfterConverting (section,mylist); simpleContainer.Size = rowSize; return curPos; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs index bc10cddf46..9c6308a4f9 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs @@ -44,8 +44,8 @@ namespace ICSharpCode.Reports.Core.Exporter if (PrintHelper.IsTextOnlyRow(simpleContainer)) { ExporterCollection myList = new ExporterCollection(); - BaseConverter.BaseConvert (myList,simpleContainer,parent.Location.X, - new Point(base.SectionBounds.DetailStart.X,base.SectionBounds.DetailStart.Y)); + BaseConvert (myList,simpleContainer,parent.Location.X, + new Point(base.SectionBounds.DetailStart.X,base.SectionBounds.DetailStart.Y)); return myList; } else { @@ -60,8 +60,7 @@ namespace ICSharpCode.Reports.Core.Exporter base.CurrentPosition = new Point(base.SectionBounds.DetailStart.X,base.SectionBounds.DetailStart.Y); BaseSection section = parent as BaseSection; - int defaultLeftPos = parent.Location.X; - + DefaultLeftPosition = parent.Location.X; Size groupSize = Size.Empty; Size childSize = Size.Empty; @@ -86,7 +85,7 @@ namespace ICSharpCode.Reports.Core.Exporter base.Evaluator.SinglePage.IDataNavigator = childNavigator; - base.CurrentPosition = ConvertGroupHeader(exporterCollection,section,defaultLeftPos,base.CurrentPosition); + base.CurrentPosition = ConvertGroupHeader(exporterCollection,section,base.CurrentPosition); section.Size = base.RestoreSectionSize; section.Items[0].Size = groupSize; @@ -106,29 +105,17 @@ namespace ICSharpCode.Reports.Core.Exporter childNavigator.Fill(simpleContainer.Items); - base.CurrentPosition = ConvertGroupChilds (exporterCollection,section, - simpleContainer,defaultLeftPos,base.CurrentPosition); - - pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],base.CurrentPosition); + base.CurrentPosition = ConvertGroupChilds (exporterCollection,section,simpleContainer); + + CheckForPageBreak(section,exporterCollection); - if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds )) { - base.CurrentPosition = ForcePageBreak (exporterCollection,section); - } } while ( childNavigator.MoveNext()); // GroupFooter - base.ConvertGroupFooter(section,section,exporterCollection,defaultLeftPos); + base.ConvertGroupFooter(section,section,exporterCollection); - base.ExPageBreakAfterGroupChange(section,section,exporterCollection); - -// if (PageBreakAfterGroupChange(section) ) { -// -// if ( base.DataNavigator.HasMoreData) -// { -// base.CurrentPosition = ForcePageBreak (exporterCollection,section); -// } -// } + base.PageBreakAfterGroupChange(section,section,exporterCollection); base.Evaluator.SinglePage.IDataNavigator = base.DataNavigator; } @@ -139,18 +126,12 @@ namespace ICSharpCode.Reports.Core.Exporter Size containerSize = section.Items[0].Size; base.FireRowRendering(simpleContainer); - base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer,defaultLeftPos,base.CurrentPosition); + base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer); section.Size = base.RestoreSectionSize; section.Items[0].Size = containerSize; } - - pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[0],base.CurrentPosition); - - if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) { - base.CurrentPosition = ForcePageBreak (exporterCollection,section); - } - + CheckForPageBreak (section,exporterCollection); ShouldDrawBorder (section,exporterCollection); } while (base.DataNavigator.MoveNext()); @@ -164,6 +145,16 @@ namespace ICSharpCode.Reports.Core.Exporter } + void CheckForPageBreak(BaseSection section, ExporterCollection exporterCollection) + { + var pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[0],base.CurrentPosition); + + if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) { + base.CurrentPosition = ForcePageBreak (exporterCollection,section); + } + } + + protected override Point ForcePageBreak(ExporterCollection exporterCollection, BaseSection section) { base.ForcePageBreak(exporterCollection,section); @@ -177,7 +168,7 @@ namespace ICSharpCode.Reports.Core.Exporter } - private Point ConvertGroupHeader(ExporterCollection exportList,BaseSection section,int leftPos,Point offset) + private Point ConvertGroupHeader(ExporterCollection exportList,BaseSection section,Point offset) { var retVal = Point.Empty; var rowSize = Size.Empty; @@ -193,11 +184,11 @@ namespace ICSharpCode.Reports.Core.Exporter exportList.AddRange(list); AfterConverting (section,list); - retVal = new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer)); + retVal = new Point (DefaultLeftPosition,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer)); } else { base.FireGroupHeaderRendering(groupedRows[0]); rowSize = groupedRows[0].Size; - retVal = ConvertStandardRow(exportList,section,groupedRows[0],leftPos,offset); + retVal = ConvertStandardRow(exportList,section,groupedRows[0]); groupedRows[0].Size = rowSize; } return retVal; diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs index 279cf1e877..94dbaca8f8 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs @@ -51,8 +51,8 @@ namespace ICSharpCode.Reports.Core.Exporter base.CurrentPosition = new Point(PrintHelper.DrawingAreaRelativeToParent(this.table.Parent,this.table).Location.X, base.SectionBounds.DetailStart.Y); - int defaultLeftPos = base.CurrentPosition.X; - +// int defaultLeftPos = base.CurrentPosition.X; + base.DefaultLeftPosition = base.CurrentPosition.X; Point dataAreaStart = new Point(table.Items[0].Location.X,table.Items[0].Location.Y + base.CurrentPosition.Y); ISimpleContainer headerRow = null; @@ -75,7 +75,7 @@ namespace ICSharpCode.Reports.Core.Exporter if (PrintHelper.IsTextOnlyRow(simpleContainer) ) { headerRow = simpleContainer; - base.CurrentPosition = BaseConverter.BaseConvert(exporterCollection,headerRow,defaultLeftPos,base.CurrentPosition); + base.CurrentPosition = BaseConvert(exporterCollection,headerRow,base.DefaultLeftPosition,base.CurrentPosition); } BaseGroupedRow row = table.Items[1] as BaseGroupedRow; @@ -90,7 +90,7 @@ namespace ICSharpCode.Reports.Core.Exporter base.Evaluator.SinglePage.IDataNavigator = childNavigator; // Convert Grouping Header - base.CurrentPosition = ConvertGroupHeader(exporterCollection,section,defaultLeftPos,base.CurrentPosition); + base.CurrentPosition = ConvertGroupHeader(exporterCollection,section,base.CurrentPosition); childNavigator.Reset(); childNavigator.MoveNext(); @@ -105,36 +105,18 @@ namespace ICSharpCode.Reports.Core.Exporter childNavigator.Fill(simpleContainer.Items); - base.CurrentPosition = ConvertGroupChilds (exporterCollection, - section, - simpleContainer,defaultLeftPos,base.CurrentPosition); + base.CurrentPosition = ConvertGroupChilds (exporterCollection,section,table); + simpleContainer.Size = containerSize; - - pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)simpleContainer,base.CurrentPosition); - - if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) - { - base.CurrentPosition = base.ForcePageBreak(exporterCollection,section); - - base.CurrentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,base.CurrentPosition); - } + CheckForPageBreak(section,simpleContainer,headerRow,exporterCollection); + } while ( childNavigator.MoveNext()); // GroupFooter - base.ConvertGroupFooter(section,table,exporterCollection,defaultLeftPos); - base.ExPageBreakAfterGroupChange(section,table,exporterCollection); - /* - if (PageBreakAfterGroupChange(table) ) - { - if ( base.DataNavigator.HasMoreData) - { - base.CurrentPosition = base.ForcePageBreak(exporterCollection,section); - base.CurrentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,base.CurrentPosition); - } - - } - */ + base.ConvertGroupFooter(section,table,exporterCollection); + base.PageBreakAfterGroupChange(section,table,exporterCollection); + base.Evaluator.SinglePage.IDataNavigator = base.DataNavigator; } } @@ -152,19 +134,9 @@ namespace ICSharpCode.Reports.Core.Exporter do { PrintHelper.AdjustSectionLocation(section); - - pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)simpleContainer,base.CurrentPosition); - - if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) - { - base.CurrentPosition = ForcePageBreak(exporterCollection,section); - - base.CurrentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,base.CurrentPosition); - } - + CheckForPageBreak(section,simpleContainer,headerRow,exporterCollection); base.FireRowRendering(simpleContainer); - base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer,defaultLeftPos,base.CurrentPosition); - + base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer); simpleContainer.Size = containerSize; section.Size = base.RestoreSectionSize; } @@ -180,15 +152,35 @@ namespace ICSharpCode.Reports.Core.Exporter } return exporterCollection; } + + #region Pagebreak + + void CheckForPageBreak(BaseSection section,ISimpleContainer container,ISimpleContainer headerRow, ExporterCollection exporterCollection) + { + var pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)container,base.CurrentPosition); + if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) + { + base.CurrentPosition = ForcePageBreak(exporterCollection,section); + + base.CurrentPosition = ConvertStandardRow (exporterCollection,section,headerRow); + } + + } + + protected override Point ForcePageBreak(ExporterCollection exporterCollection, BaseSection section) { base.ForcePageBreak(exporterCollection, section); return base.SectionBounds.ReportHeaderRectangle.Location; } + #endregion + + + #region Grouping - private Point ConvertGroupHeader(ExporterCollection exportList,BaseSection section,int leftPos,Point offset) + private Point ConvertGroupHeader(ExporterCollection exportList,BaseSection section,Point offset) { var retVal = Point.Empty; var rowSize = Size.Empty; @@ -207,18 +199,19 @@ namespace ICSharpCode.Reports.Core.Exporter exportList.AddRange(list); AfterConverting (section,list); - retVal = new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer)); + retVal = new Point (base.DefaultLeftPosition,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer)); } else { rowSize = groupedRow[0].Size; base.FireGroupHeaderRendering(groupedRow[0]); - retVal = ConvertStandardRow(exportList,section,groupedRow[0],leftPos,offset); + retVal = ConvertStandardRow(exportList,section,groupedRow[0]); groupedRow[0].Size = rowSize; } return retVal; } + #endregion } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs index 2e9c872087..bbc5b24395 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs @@ -117,6 +117,7 @@ namespace ICSharpCode.Reports.Core.Exporter baseConverter.SectionRendering += OnSectionRendering; baseConverter.GroupHeaderRendering += OnGroupHeaderRendering; + baseConverter.GroupFooterRendering += OnGroupFooterRendering; baseConverter.RowRendering += OnRowRendering; baseConverter.Graphics = base.Graphics; @@ -146,6 +147,14 @@ namespace ICSharpCode.Reports.Core.Exporter base.FireGroupHeaderEvent(ghea); } + + void OnGroupFooterRendering (object sender, GroupFooterEventArgs gfea) + { +// Console.WriteLine ("DatapageBuilder : OnGroupFooterEvent"); + base.FireGroupFooterEvent(gfea); + } + + void OnRowRendering (object sender,RowRenderEventArgs rrea) { // Console.WriteLine("Datapagebuilder : OnRowRendering"); diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs index 1a00a11f2e..e27813db3d 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs @@ -16,6 +16,7 @@ namespace ICSharpCode.Reports.Core event EventHandler PageCreated; event EventHandler SectionRendering; event EventHandler GroupHeaderRendering; + event EventHandler GroupFooterRendering; event EventHandler RowRendering; } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IItemConverter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IItemConverter.cs index 02ec09e0c2..35fe8243c5 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IItemConverter.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IItemConverter.cs @@ -39,5 +39,6 @@ namespace ICSharpCode.Reports.Core.Interfaces Point CurrentPosition {get;set;} event EventHandler GroupHeaderRendering; event EventHandler RowRendering; + event EventHandler GroupFooterRendering; } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RenderTable.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RenderTable.cs index 69f0e25611..7dde45b20f 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RenderTable.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RenderTable.cs @@ -25,8 +25,8 @@ namespace ICSharpCode.Reports.Core ISinglePage singlePage; ILayouter layouter; ReportPageEventArgs reportPageEventArgs; - BaseSection currentSection; - + BaseSection currentSection; + public RenderTable(IDataNavigator datanavigator,Rectangle parentRectangle,ISinglePage singlePage,ILayouter layouter,BaseSection section) { this.dataNavigator = datanavigator; @@ -35,7 +35,7 @@ namespace ICSharpCode.Reports.Core this.singlePage = singlePage; this.layouter = layouter; this.currentSection = section; - + } @@ -66,54 +66,54 @@ namespace ICSharpCode.Reports.Core // foreach (BaseRowItem row in table.Items) // { - rs = simpleContainer.Size; - PrintHelper.AdjustParent(table as BaseReportItem,table.Items); - + rs = simpleContainer.Size; + PrintHelper.AdjustParent(table as BaseReportItem,table.Items); + // if (PrintHelper.IsTextOnlyRow(simpleContainer) ) // { - - PrintHelper.SetLayoutForRow(ReportPageEventArgs.PrintPageEventArgs.Graphics,Layouter,simpleContainer); - - var r = StandardPrinter.RenderContainer(simpleContainer,evaluator,currentPosition,ReportPageEventArgs); - - currentPosition = PrintHelper.ConvertRectangleToCurentPosition (r); - - table.Location = saveLocation; + + PrintHelper.SetLayoutForRow(ReportPageEventArgs.PrintPageEventArgs.Graphics,Layouter,simpleContainer); + + var r = StandardPrinter.RenderContainer(simpleContainer,evaluator,currentPosition,ReportPageEventArgs); + + currentPosition = PrintHelper.ConvertRectangleToCurentPosition (r); + + table.Location = saveLocation; // } // else { - //--------------- - simpleContainer = table.Items[1] as ISimpleContainer; - - int adjust = simpleContainer.Location.Y - saveLocation.Y; - simpleContainer.Location = new Point(simpleContainer.Location.X,simpleContainer.Location.Y - adjust - 3 * GlobalValues.GapBetweenContainer); - rs = simpleContainer.Size; - - do { - - pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)table,currentPosition); - - if (PrintHelper.IsPageFull(pageBreakRect,this.SectionBounds)) { - Console.WriteLine("PageBreak - PageFull"); - table.Location = saveLocation; - AbstractRenderer.PageBreak(ReportPageEventArgs); - return; - } - - this.dataNavigator.Fill(simpleContainer.Items); - - PrintHelper.SetLayoutForRow(ReportPageEventArgs.PrintPageEventArgs.Graphics,Layouter,simpleContainer); - - r = StandardPrinter.RenderContainer(simpleContainer,evaluator,currentPosition,ReportPageEventArgs); - - currentPosition = PrintHelper.ConvertRectangleToCurentPosition (r); + //--------------- + simpleContainer = table.Items[1] as ISimpleContainer; + + int adjust = simpleContainer.Location.Y - saveLocation.Y; + simpleContainer.Location = new Point(simpleContainer.Location.X,simpleContainer.Location.Y - adjust - 3 * GlobalValues.GapBetweenContainer); + rs = simpleContainer.Size; + + do { + + pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)table,currentPosition); + + if (PrintHelper.IsPageFull(pageBreakRect,this.SectionBounds)) { + Console.WriteLine("PageBreak - PageFull"); + table.Location = saveLocation; + AbstractRenderer.PageBreak(ReportPageEventArgs); + return; + } + + this.dataNavigator.Fill(simpleContainer.Items); + + PrintHelper.SetLayoutForRow(ReportPageEventArgs.PrintPageEventArgs.Graphics,Layouter,simpleContainer); + + r = StandardPrinter.RenderContainer(simpleContainer,evaluator,currentPosition,ReportPageEventArgs); + + currentPosition = PrintHelper.ConvertRectangleToCurentPosition (r); - simpleContainer.Size = rs; - } - while (this.dataNavigator.MoveNext()); - //----- + simpleContainer.Size = rs; + } + while (this.dataNavigator.MoveNext()); + //----- // } } - + @@ -214,7 +214,7 @@ namespace ICSharpCode.Reports.Core public ILayouter Layouter { get { - return this.layouter; + return this.layouter; } } @@ -225,6 +225,6 @@ namespace ICSharpCode.Reports.Core get { return reportPageEventArgs; } set { reportPageEventArgs = value; } } - + } } diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs index e807ead4cb..b426d6dd8e 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs @@ -167,6 +167,8 @@ namespace ICSharpCode.Reports.Core.ReportViewer IReportCreator reportCreator = DataPageBuilder.CreateInstance(reportModel,data,layouter); reportCreator.SectionRendering += new EventHandler(PushPrinting); reportCreator.GroupHeaderRendering += new EventHandler(GroupHeaderRendering); + reportCreator.GroupFooterRendering += GroupFooterRendering; + reportCreator.RowRendering += new EventHandler(RowRendering); reportCreator.PageCreated += OnPageCreated; reportCreator.BuildExportList(); @@ -224,13 +226,23 @@ namespace ICSharpCode.Reports.Core.ReportViewer private void GroupHeaderRendering (object sender, GroupHeaderEventArgs ghea) { - Console.WriteLine(); Console.WriteLine("ReportViewer - GroupHeaderRendering :"); // BaseGroupedRow v = ghea.GroupHeader; // v.BackColor = System.Drawing.Color.Red; - } + + private void GroupFooterRendering ( object sender, GroupFooterEventArgs gfea) + { +// Console.WriteLine(); + Console.WriteLine("ReportViewer - GroupFooterRendering :"); +// var v = gfea.GroupFooter; +// v.BackColor = System.Drawing.Color.Red; +// BaseTextItem i = (BaseTextItem)v.Items[0]; +// i.Text ="neuer text"; + } + + private void RowRendering (object sender,RowRenderEventArgs rrea) { Console.WriteLine("ReportViewer - RowRendering :");