Browse Source

GroupFooterEvent, cleanup

pull/14/head
peterforstmeier 15 years ago
parent
commit
b3c5f17e1e
  1. 13
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/SectionRenderEventArgs.cs
  2. 18
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs
  3. 28
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  4. 57
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  5. 81
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs
  6. 9
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs
  7. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs
  8. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IItemConverter.cs
  9. 92
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RenderTable.cs
  10. 16
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs

13
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/SectionRenderEventArgs.cs

@ -8,6 +8,19 @@ namespace ICSharpCode.Reports.Core { @@ -8,6 +8,19 @@ namespace ICSharpCode.Reports.Core {
/// Description of SectionRenderEventArgs.
/// </summary>
public class GroupFooterEventArgs: EventArgs
{
public GroupFooterEventArgs (GroupFooter groupFooter)
{
GroupFooter = groupFooter;
}
public GroupFooter GroupFooter {get; private set;}
}
public class GroupHeaderEventArgs: EventArgs
{

18
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs

@ -23,6 +23,8 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -23,6 +23,8 @@ namespace ICSharpCode.Reports.Core.Exporter
public event EventHandler<PageCreatedEventArgs> PageCreated;
public event EventHandler<SectionRenderEventArgs> SectionRendering;
public event EventHandler<GroupHeaderEventArgs> GroupHeaderRendering;
public event EventHandler<GroupFooterEventArgs> GroupFooterRendering;
public event EventHandler<RowRenderEventArgs> RowRendering;
#region Constructor
@ -241,6 +243,14 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -241,6 +243,14 @@ namespace ICSharpCode.Reports.Core.Exporter
}
protected void FireGroupFooterEvent (GroupFooterEventArgs gfea)
{
EventHelper.Raise<GroupFooterEventArgs>(GroupFooterRendering,this,gfea);
}
protected void FireRowRenderEvent (RowRenderEventArgs rrea)
{
EventHelper.Raise<RowRenderEventArgs>(RowRendering,this,rrea);
@ -287,14 +297,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -287,14 +297,6 @@ namespace ICSharpCode.Reports.Core.Exporter
get { return SinglePage.SectionBounds; }
}
// protected bool PageFull
// {
// get { return pageFull; }
// set { pageFull = value; }
// }
//
#endregion
}
}

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

@ -33,6 +33,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -33,6 +33,7 @@ namespace ICSharpCode.Reports.Core.Exporter
public event EventHandler <NewPageEventArgs> PageFull;
public event EventHandler<SectionRenderEventArgs> SectionRendering;
public event EventHandler<GroupHeaderEventArgs> GroupHeaderRendering;
public event EventHandler<GroupFooterEventArgs> GroupFooterRendering;
public event EventHandler<RowRenderEventArgs> RowRendering;
public BaseConverter(IDataNavigator dataNavigator,ExporterPage singlePage,
@ -92,6 +93,12 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -92,6 +93,12 @@ namespace ICSharpCode.Reports.Core.Exporter
}
protected void FireGroupFooterRendering (GroupFooter groupFooter)
{
GroupFooterEventArgs gfea = new GroupFooterEventArgs(groupFooter);
EventHelper.Raise<GroupFooterEventArgs>(GroupFooterRendering,this,gfea);
}
protected void FireSectionRendering (BaseSection section)
{
@ -128,31 +135,31 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -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 @@ -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 @@ -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 @@ -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;

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

@ -44,8 +44,8 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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;

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

@ -51,8 +51,8 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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
}
}

9
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs

@ -117,6 +117,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -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 @@ -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");

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs

@ -16,6 +16,7 @@ namespace ICSharpCode.Reports.Core @@ -16,6 +16,7 @@ namespace ICSharpCode.Reports.Core
event EventHandler<PageCreatedEventArgs> PageCreated;
event EventHandler<SectionRenderEventArgs> SectionRendering;
event EventHandler<GroupHeaderEventArgs> GroupHeaderRendering;
event EventHandler<GroupFooterEventArgs> GroupFooterRendering;
event EventHandler<RowRenderEventArgs> RowRendering;
}
}

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IItemConverter.cs

@ -39,5 +39,6 @@ namespace ICSharpCode.Reports.Core.Interfaces @@ -39,5 +39,6 @@ namespace ICSharpCode.Reports.Core.Interfaces
Point CurrentPosition {get;set;}
event EventHandler<GroupHeaderEventArgs> GroupHeaderRendering;
event EventHandler<RowRenderEventArgs> RowRendering;
event EventHandler<GroupFooterEventArgs> GroupFooterRendering;
}
}

92
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/RenderTable.cs

@ -25,8 +25,8 @@ namespace ICSharpCode.Reports.Core @@ -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 @@ -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 @@ -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 @@ -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 @@ -225,6 +225,6 @@ namespace ICSharpCode.Reports.Core
get { return reportPageEventArgs; }
set { reportPageEventArgs = value; }
}
}
}

16
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs

@ -167,6 +167,8 @@ namespace ICSharpCode.Reports.Core.ReportViewer @@ -167,6 +167,8 @@ namespace ICSharpCode.Reports.Core.ReportViewer
IReportCreator reportCreator = DataPageBuilder.CreateInstance(reportModel,data,layouter);
reportCreator.SectionRendering += new EventHandler<SectionRenderEventArgs>(PushPrinting);
reportCreator.GroupHeaderRendering += new EventHandler<GroupHeaderEventArgs>(GroupHeaderRendering);
reportCreator.GroupFooterRendering += GroupFooterRendering;
reportCreator.RowRendering += new EventHandler<RowRenderEventArgs>(RowRendering);
reportCreator.PageCreated += OnPageCreated;
reportCreator.BuildExportList();
@ -224,13 +226,23 @@ namespace ICSharpCode.Reports.Core.ReportViewer @@ -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 :");

Loading…
Cancel
Save