Browse Source

RowRendering Event is fired after the row is filled

pull/14/head
peterforstmeier 15 years ago
parent
commit
7534372eda
  1. 14
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs
  2. 34
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  3. 19
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  4. 10
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs

14
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/Layouter.cs

@ -33,7 +33,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
return Rectangle.Empty; return Rectangle.Empty;
} }
Console.WriteLine("layouter for container <{0}>",container.ToString()); Console.WriteLine("\tlayouter for container <{0}>",container.ToString());
Rectangle desiredContainerRectangle = new Rectangle (container.Location,container.Size); Rectangle desiredContainerRectangle = new Rectangle (container.Location,container.Size);
@ -58,7 +58,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
// //
// Console.WriteLine("Diff {0} - {1} dif {2}",desiredContainerRectangle,r1,desiredContainerRectangle.Height - r1.Height); // Console.WriteLine("Diff {0} - {1} dif {2}",desiredContainerRectangle,r1,desiredContainerRectangle.Height - r1.Height);
} }
Console.WriteLine(" Container : {0} - DesiredContainerRectangle {1} ",container.Size,desiredContainerRectangle.Size); Console.WriteLine("\tContainer : {0} - DesiredContainerRectangle {1} ",container.Size,desiredContainerRectangle.Size);
return desiredContainerRectangle; return desiredContainerRectangle;
} }
@ -72,7 +72,7 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
throw new ArgumentNullException("section"); throw new ArgumentNullException("section");
} }
Console.WriteLine("layouter for section <{0}>",section.Name); Console.WriteLine("\tlayouter for section <{0}>",section.Name);
IEnumerable<BaseReportItem> canGrowShrinkCollection = from bt in section.Items where bt.CanGrow == true select bt; IEnumerable<BaseReportItem> canGrowShrinkCollection = from bt in section.Items where bt.CanGrow == true select bt;
@ -86,18 +86,14 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
Rectangle surroundingRec = FindSurroundingRectangle(graphics,canGrowShrinkCollection); Rectangle surroundingRec = FindSurroundingRectangle(graphics,canGrowShrinkCollection);
if (surroundingRec.Height > desiredSectionRectangle .Height) { if (surroundingRec.Height > desiredSectionRectangle .Height) {
// desiredSectionRectangle = new Rectangle(section.Location.X,
// section .Location.Y,
// section .Size.Width,
// surroundingRec.Size.Height + GlobalValues.ControlMargins.Top + GlobalValues.ControlMargins.Bottom );
desiredSectionRectangle = new Rectangle(section.Location.X, desiredSectionRectangle = new Rectangle(section.Location.X,
section .Location.Y, section .Location.Y,
section .Size.Width, section .Size.Width,
surroundingRec.Size.Height); surroundingRec.Size.Height);
} }
} }
Console.WriteLine(" Section : {0} - DesiredContainerRectangle {1} ",section.Size,desiredSectionRectangle.Size); Console.WriteLine("\tSection : {0} - DesiredContainerRectangle {1} ",section.Size,desiredSectionRectangle.Size);
return desiredSectionRectangle; return desiredSectionRectangle;
} }

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

@ -78,6 +78,7 @@ namespace ICSharpCode.Reports.Core.Exporter
if (row == null) { if (row == null) {
throw new ArgumentException("row"); throw new ArgumentException("row");
} }
Console.WriteLine("\tFireRowRendering");
RowRenderEventArgs rrea = new RowRenderEventArgs(row,currentNavigator.Current); RowRenderEventArgs rrea = new RowRenderEventArgs(row,currentNavigator.Current);
EventHelper.Raise<RowRenderEventArgs>(RowRendering,this,rrea); EventHelper.Raise<RowRenderEventArgs>(RowRendering,this,rrea);
} }
@ -85,6 +86,7 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void FireGroupHeaderRendering (GroupHeader groupHeader) protected void FireGroupHeaderRendering (GroupHeader groupHeader)
{ {
Console.WriteLine("\tFireGroupHeaderRendering");
GroupHeaderEventArgs ghea = new GroupHeaderEventArgs(groupHeader); GroupHeaderEventArgs ghea = new GroupHeaderEventArgs(groupHeader);
EventHelper.Raise<GroupHeaderEventArgs>(GroupHeaderRendering,this,ghea); EventHelper.Raise<GroupHeaderEventArgs>(GroupHeaderRendering,this,ghea);
} }
@ -92,6 +94,7 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void FireGroupFooterRendering (GroupFooter groupFooter) protected void FireGroupFooterRendering (GroupFooter groupFooter)
{ {
Console.WriteLine("\tFireGroupFooterRendering");
GroupFooterEventArgs gfea = new GroupFooterEventArgs(groupFooter); GroupFooterEventArgs gfea = new GroupFooterEventArgs(groupFooter);
EventHelper.Raise<GroupFooterEventArgs>(GroupFooterRendering,this,gfea); EventHelper.Raise<GroupFooterEventArgs>(GroupFooterRendering,this,gfea);
} }
@ -137,9 +140,10 @@ namespace ICSharpCode.Reports.Core.Exporter
{ {
var footers = BaseConverter.FindGroupFooter(container); var footers = BaseConverter.FindGroupFooter(container);
if (footers.Count > 0) { if (footers.Count > 0) {
FireGroupFooterRendering(footers[0]);
Size rowSize = footers[0].Size; Size rowSize = footers[0].Size;
CurrentPosition = ConvertStandardRow(exporterCollection,section,(ISimpleContainer)footers[0]); CurrentPosition = ConvertStandardRow(exporterCollection,section,(ISimpleContainer)footers[0]);
FireGroupFooterRendering(footers[0]);
footers[0].Size = rowSize; footers[0].Size = rowSize;
} }
} }
@ -148,7 +152,6 @@ namespace ICSharpCode.Reports.Core.Exporter
ISimpleContainer simpleContainer,IDataNavigator currentNavigator) ISimpleContainer simpleContainer,IDataNavigator currentNavigator)
{ {
PrepareContainerForConverting(section,simpleContainer); PrepareContainerForConverting(section,simpleContainer);
FireRowRendering(simpleContainer,currentNavigator);
Point curPos = ConvertContainer(mylist,simpleContainer,DefaultLeftPosition,CurrentPosition); Point curPos = ConvertContainer(mylist,simpleContainer,DefaultLeftPosition,CurrentPosition);
AfterConverting (mylist); AfterConverting (mylist);
return curPos; return curPos;
@ -244,6 +247,17 @@ namespace ICSharpCode.Reports.Core.Exporter
} }
protected Point ConvertStandardRow(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer)
{
var rowSize = simpleContainer.Size;
PrepareContainerForConverting(section,simpleContainer);
Point curPos = ConvertContainer(mylist,simpleContainer,DefaultLeftPosition,CurrentPosition);
AfterConverting (mylist);
simpleContainer.Size = rowSize;
return curPos;
}
protected void PrepareContainerForConverting(BaseSection section,ISimpleContainer simpleContainer) protected void PrepareContainerForConverting(BaseSection section,ISimpleContainer simpleContainer)
{ {
FireSectionRendering(section); FireSectionRendering(section);
@ -257,19 +271,6 @@ namespace ICSharpCode.Reports.Core.Exporter
} }
protected Point ConvertStandardRow(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer)
{
var rowSize = simpleContainer.Size;
FillRow(simpleContainer);
PrepareContainerForConverting(section,simpleContainer);
Point curPos = ConvertContainer(mylist,simpleContainer,DefaultLeftPosition,CurrentPosition);
AfterConverting (mylist);
simpleContainer.Size = rowSize;
return curPos;
}
public static Point ConvertContainer(ExporterCollection myList,ISimpleContainer container,int leftPos,Point curPos) public static Point ConvertContainer(ExporterCollection myList,ISimpleContainer container,int leftPos,Point curPos)
{ {
ExporterCollection ml = BaseConverter.ConvertItems (container, curPos); ExporterCollection ml = BaseConverter.ConvertItems (container, curPos);
@ -278,8 +279,9 @@ namespace ICSharpCode.Reports.Core.Exporter
} }
private void FillRow (ISimpleContainer row) protected void FillRow (ISimpleContainer row)
{ {
Console.WriteLine("\tFillRow");
DataNavigator.Fill(row.Items); DataNavigator.Fill(row.Items);
} }

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

@ -96,14 +96,16 @@ namespace ICSharpCode.Reports.Core.Exporter
StandardPrinter.AdjustBackColor(simpleContainer,GlobalValues.DefaultBackColor); StandardPrinter.AdjustBackColor(simpleContainer,GlobalValues.DefaultBackColor);
do do
{ {
Console.WriteLine("");
section.Size = base.RestoreSectionSize; section.Size = base.RestoreSectionSize;
section.Items[0].Size = groupSize; section.Items[0].Size = groupSize;
section.Items[1].Size = childSize; section.Items[1].Size = childSize;
Console.WriteLine("\tFillRow");
childNavigator.Fill(simpleContainer.Items); childNavigator.Fill(simpleContainer.Items);
base.CurrentPosition = ConvertGroupChilds (exporterCollection,section,simpleContainer,childNavigator);
base.CurrentPosition = ConvertGroupChilds (exporterCollection,section,simpleContainer,childNavigator); FireRowRendering(simpleContainer,childNavigator);
CheckForPageBreak(section,exporterCollection); CheckForPageBreak(section,exporterCollection);
Console.WriteLine("");
} }
while ( childNavigator.MoveNext()); while ( childNavigator.MoveNext());
@ -118,13 +120,15 @@ namespace ICSharpCode.Reports.Core.Exporter
else else
{ {
// No Grouping at all, the first item in section.items is the DetailRow // No Grouping at all, the first item in section.items is the DetailRow
Console.WriteLine("");
Size containerSize = section.Items[0].Size; Size containerSize = section.Items[0].Size;
base.FillRow(simpleContainer);
base.FireRowRendering(simpleContainer,base.DataNavigator);
base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer); base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer);
base.FireRowRendering(simpleContainer,base.DataNavigator);
section.Size = base.RestoreSectionSize; section.Size = base.RestoreSectionSize;
section.Items[0].Size = containerSize; section.Items[0].Size = containerSize;
Console.WriteLine("");
} }
CheckForPageBreak (section,exporterCollection); CheckForPageBreak (section,exporterCollection);
ShouldDrawBorder (section,exporterCollection); ShouldDrawBorder (section,exporterCollection);
@ -181,9 +185,10 @@ namespace ICSharpCode.Reports.Core.Exporter
AfterConverting (list); AfterConverting (list);
retVal = new Point (DefaultLeftPosition,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 { } else {
base.FireGroupHeaderRendering(groupedRows[0]); FillRow(groupedRows[0]);
rowSize = groupedRows[0].Size; rowSize = groupedRows[0].Size;
retVal = ConvertStandardRow(exportList,section,groupedRows[0]); retVal = ConvertStandardRow(exportList,section,groupedRows[0]);
base.FireGroupHeaderRendering(groupedRows[0]);
groupedRows[0].Size = rowSize; groupedRows[0].Size = rowSize;
} }
return retVal; return retVal;

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

@ -131,18 +131,22 @@ namespace ICSharpCode.Reports.Core.Exporter
simpleContainer = table.Items[1] as ISimpleContainer; simpleContainer = table.Items[1] as ISimpleContainer;
base.SaveSectionSize(section.Size); base.SaveSectionSize(section.Size);
containerSize = simpleContainer.Size; containerSize = simpleContainer.Size;
Console.WriteLine("datasection - NO grouping");
do { do {
Console.WriteLine("");
PrintHelper.AdjustSectionLocation(section); PrintHelper.AdjustSectionLocation(section);
CheckForPageBreak(section,simpleContainer,headerRow,exporterCollection); CheckForPageBreak(section,simpleContainer,headerRow,exporterCollection);
base.FireRowRendering(simpleContainer,base.DataNavigator); FillRow(simpleContainer);
base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer); base.CurrentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer);
FireRowRendering(simpleContainer,base.DataNavigator);
simpleContainer.Size = containerSize; simpleContainer.Size = containerSize;
section.Size = base.RestoreSectionSize; section.Size = base.RestoreSectionSize;
Console.WriteLine("");
} }
while (base.DataNavigator.MoveNext()); while (base.DataNavigator.MoveNext());
Console.WriteLine("");
Console.WriteLine("END of datasection - NO grouping");
base.DataNavigator.Reset(); base.DataNavigator.Reset();
base.DataNavigator.MoveNext(); base.DataNavigator.MoveNext();
SectionBounds.ReportFooterRectangle = new Rectangle(SectionBounds.ReportFooterRectangle.Left, SectionBounds.ReportFooterRectangle = new Rectangle(SectionBounds.ReportFooterRectangle.Left,

Loading…
Cancel
Save