Browse Source

GroupFooter in TableLayout-Reports

pull/14/head
peterforstmeier 15 years ago
parent
commit
56da4cffd7
  1. 26
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  2. 25
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  3. 31
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs

26
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs

@ -128,6 +128,17 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -128,6 +128,17 @@ namespace ICSharpCode.Reports.Core.Exporter
#region Grouping
protected void ConvertGroupFooter (BaseSection section,ISimpleContainer container,ExporterCollection exporterCollection,int left)
{
var footers = BaseConverter.FindGroupFooter(container);
if (footers.Count > 0) {
// base.FireGroupHeaderRendering(groupedRows[0]);
Size rowSize = footers[0].Size;
CurrentPosition = ConvertStandardRow(exporterCollection,section,(ISimpleContainer)footers[0],left,CurrentPosition);
footers[0].Size = rowSize;
}
}
protected Point ConvertGroupChilds(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition)
{
PrepareContainerForConverting(section,simpleContainer);
@ -138,7 +149,20 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -138,7 +149,20 @@ namespace ICSharpCode.Reports.Core.Exporter
}
protected bool PageBreakAfterGroupChange(ISimpleContainer container)
protected void ExPageBreakAfterGroupChange(BaseSection section,ISimpleContainer container,ExporterCollection exporterCollection)
{
if (PageBreakAfterGroupChange(section) ) {
if (DataNavigator.HasMoreData)
{
CurrentPosition = ForcePageBreak (exporterCollection,section);
}
}
}
private bool PageBreakAfterGroupChange(ISimpleContainer container)
{
var groupedRows = BaseConverter.FindGroupHeader(container);
if (groupedRows.Count > 0) {

25
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs

@ -118,24 +118,17 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -118,24 +118,17 @@ namespace ICSharpCode.Reports.Core.Exporter
while ( childNavigator.MoveNext());
// GroupFooter
base.ConvertGroupFooter(section,section,exporterCollection,defaultLeftPos);
var footers = BaseConverter.FindGroupFooter(section);
if (footers.Count > 0) {
// base.FireGroupHeaderRendering(groupedRows[0]);
Size rowSize = footers[0].Size;
base.CurrentPosition = ConvertStandardRow(exporterCollection,section,(ISimpleContainer)footers[0],defaultLeftPos,base.CurrentPosition);
footers[0].Size = rowSize;
}
base.ExPageBreakAfterGroupChange(section,section,exporterCollection);
if (PageBreakAfterGroupChange(section) ) {
if ( base.DataNavigator.HasMoreData)
{
base.CurrentPosition = ForcePageBreak (exporterCollection,section);
}
}
// if (PageBreakAfterGroupChange(section) ) {
//
// if ( base.DataNavigator.HasMoreData)
// {
// base.CurrentPosition = ForcePageBreak (exporterCollection,section);
// }
// }
base.Evaluator.SinglePage.IDataNavigator = base.DataNavigator;
}

31
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs

@ -50,7 +50,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -50,7 +50,7 @@ namespace ICSharpCode.Reports.Core.Exporter
BaseSection section = table.Parent as BaseSection;
base.CurrentPosition = new Point(PrintHelper.DrawingAreaRelativeToParent(this.table.Parent,this.table).Location.X,
base.SectionBounds.DetailStart.Y);
base.SectionBounds.DetailStart.Y);
int defaultLeftPos = base.CurrentPosition.X;
Point dataAreaStart = new Point(table.Items[0].Location.X,table.Items[0].Location.Y + base.CurrentPosition.Y);
@ -106,22 +106,25 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -106,22 +106,25 @@ namespace ICSharpCode.Reports.Core.Exporter
childNavigator.Fill(simpleContainer.Items);
base.CurrentPosition = ConvertGroupChilds (exporterCollection,
section,
simpleContainer,defaultLeftPos,base.CurrentPosition);
// Console.WriteLine (" childs delta {0} - container {1}",base.CurrentPosition.Y - p,simpleContainer.Size);
section,
simpleContainer,defaultLeftPos,base.CurrentPosition);
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);
}
}
while ( childNavigator.MoveNext());
// GroupFooter
base.ConvertGroupFooter(section,table,exporterCollection,defaultLeftPos);
base.ExPageBreakAfterGroupChange(section,table,exporterCollection);
/*
if (PageBreakAfterGroupChange(table) )
{
if ( base.DataNavigator.HasMoreData)
@ -131,7 +134,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -131,7 +134,7 @@ namespace ICSharpCode.Reports.Core.Exporter
}
}
*/
base.Evaluator.SinglePage.IDataNavigator = base.DataNavigator;
}
}
@ -142,13 +145,10 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -142,13 +145,10 @@ namespace ICSharpCode.Reports.Core.Exporter
{
// No Grouping at all
simpleContainer = table.Items[1] as ISimpleContainer;
// Console.WriteLine("startconversion");
simpleContainer = table.Items[1] as ISimpleContainer;
base.SaveSectionSize(section.Size);
containerSize = simpleContainer.Size;
containerSize = simpleContainer.Size;
do {
PrintHelper.AdjustSectionLocation(section);
@ -161,10 +161,9 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -161,10 +161,9 @@ namespace ICSharpCode.Reports.Core.Exporter
base.CurrentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,base.CurrentPosition);
}
// int p = base.CurrentPosition.Y;
base.FireRowRendering(simpleContainer);
base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer,defaultLeftPos,base.CurrentPosition);
// Console.WriteLine ("delta {0} - container {1}",base.CurrentPosition.Y - p,simpleContainer.Size);
simpleContainer.Size = containerSize;
section.Size = base.RestoreSectionSize;
@ -176,7 +175,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -176,7 +175,7 @@ namespace ICSharpCode.Reports.Core.Exporter
SectionBounds.ReportFooterRectangle = new Rectangle(SectionBounds.ReportFooterRectangle.Left,
base.CurrentPosition.Y,
SectionBounds.ReportFooterRectangle.Width,
SectionBounds.ReportFooterRectangle.Height);
SectionBounds.ReportFooterRectangle.Height);
}
}
return exporterCollection;

Loading…
Cancel
Save