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

Loading…
Cancel
Save