Browse Source

Event's for GroupHeader (GroupHeaderRendering) and DetailRows (RowRendering)

pull/14/head
peterforstmeier 15 years ago
parent
commit
4931fee9b4
  1. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/PrintEventArgs.cs
  2. 54
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/SectionRenderEventArgs.cs
  3. 13
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/BasePager.cs
  4. 28
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  5. 10
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  6. 5
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedTableConverter.cs
  7. 18
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/DataPageBuilder.cs
  8. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/IReportCreator.cs
  9. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IItemConverter.cs
  10. 20
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportViewer/ReportViewer.cs

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Events/PrintEventArgs.cs

@ -44,7 +44,7 @@ namespace ICSharpCode.Reports.Core {
} }
/// <summary> /// <summary>
/// This Event is fiered after an Item is printed /// This Event is fired after an Item is printed
/// </summary> /// </summary>
public class AfterPrintEventArgs : System.EventArgs { public class AfterPrintEventArgs : System.EventArgs {
PointF locationAfterPrint; PointF locationAfterPrint;

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

@ -8,38 +8,50 @@ namespace ICSharpCode.Reports.Core {
/// Description of SectionRenderEventArgs. /// Description of SectionRenderEventArgs.
/// </summary> /// </summary>
public class GroupHeaderEventArgs: EventArgs
{
public GroupHeaderEventArgs (BaseGroupedRow groupHeader)
{
GroupHeader = groupHeader;
}
public BaseGroupedRow GroupHeader {get; private set;}
}
public class RowRenderEventArgs : EventArgs
{
public RowRenderEventArgs (BaseRowItem row)
{
Row = row;
}
BaseRowItem Row {get;set;}
}
public class SectionRenderEventArgs:SectionEventArgs{ public class SectionRenderEventArgs:SectionEventArgs{
private int pageNumber;
private int rowNumber;
private BaseSection currentSection;
public SectionRenderEventArgs(BaseSection section, public SectionRenderEventArgs(BaseSection section,
int pageNumber,int rowNumber, int pageNumber,int rowNumber,
BaseSection currentSection):base(section){ BaseSection currentSection):base(section){
this.pageNumber = pageNumber; this.PageNumber = pageNumber;
this.currentSection = currentSection; this.CurrentSection = currentSection;
this.rowNumber = rowNumber; this.RowNumber = rowNumber;
} }
public int PageNumber { public int PageNumber {get; private set;}
get {
return pageNumber;
}
}
public int RowNumber { public int RowNumber {get; private set;}
get {
return rowNumber;
}
}
public BaseSection CurrentSection { public BaseSection CurrentSection {get; private set;}
get {
return currentSection;
}
}
} }
} }

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

@ -22,6 +22,8 @@ namespace ICSharpCode.Reports.Core.Exporter
public event EventHandler<PageCreatedEventArgs> PageCreated; public event EventHandler<PageCreatedEventArgs> PageCreated;
public event EventHandler<SectionRenderEventArgs> SectionRendering; public event EventHandler<SectionRenderEventArgs> SectionRendering;
public event EventHandler<GroupHeaderEventArgs> GroupHeaderRendering;
public event EventHandler<RowRenderEventArgs> RowRendering;
#region Constructor #region Constructor
@ -220,6 +222,7 @@ namespace ICSharpCode.Reports.Core.Exporter
#region Event's #region Event's
protected void FireSectionRenderEvent (BaseSection section,int currentRow) protected void FireSectionRenderEvent (BaseSection section,int currentRow)
{ {
SectionRenderEventArgs ea = SectionRenderEventArgs ea =
@ -232,7 +235,17 @@ namespace ICSharpCode.Reports.Core.Exporter
} }
protected void FireGroupHeaderEvent (GroupHeaderEventArgs ghea)
{
EventHelper.Raise<GroupHeaderEventArgs>(GroupHeaderRendering,this,ghea);
}
protected void FireRowRenderEvent (RowRenderEventArgs rrea)
{
EventHelper.Raise<RowRenderEventArgs>(RowRendering,this,rrea);
}
protected void FirePageCreated(ExporterPage page) protected void FirePageCreated(ExporterPage page)
{ {
EventHelper.Raise<PageCreatedEventArgs>(PageCreated,this, EventHelper.Raise<PageCreatedEventArgs>(PageCreated,this,

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

@ -32,8 +32,8 @@ namespace ICSharpCode.Reports.Core.Exporter
public event EventHandler <NewPageEventArgs> PageFull; public event EventHandler <NewPageEventArgs> PageFull;
public event EventHandler<SectionRenderEventArgs> SectionRendering; public event EventHandler<SectionRenderEventArgs> SectionRendering;
public event EventHandler<GroupHeaderEventArgs> GroupHeaderRendering;
public event EventHandler<RowRenderEventArgs> RowRendering;
public BaseConverter(IDataNavigator dataNavigator,ExporterPage singlePage, public BaseConverter(IDataNavigator dataNavigator,ExporterPage singlePage,
ILayouter layouter) ILayouter layouter)
@ -74,6 +74,24 @@ namespace ICSharpCode.Reports.Core.Exporter
#endregion #endregion
protected void FireRowRendering (ISimpleContainer detailRow)
{
BaseRowItem row = detailRow as BaseRowItem;
if (row == null) {
throw new ArgumentException("row");
}
RowRenderEventArgs rrea = new RowRenderEventArgs(row);
EventHelper.Raise<RowRenderEventArgs>(RowRendering,this,rrea);
}
protected void FireGroupHeaderRendering (BaseGroupedRow groupHeader)
{
GroupHeaderEventArgs ghea = new GroupHeaderEventArgs(groupHeader);
EventHelper.Raise<GroupHeaderEventArgs>(GroupHeaderRendering,this,ghea);
}
protected void FireSectionRendering (BaseSection section) protected void FireSectionRendering (BaseSection section)
{ {
@ -113,6 +131,7 @@ namespace ICSharpCode.Reports.Core.Exporter
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);
FireRowRendering(simpleContainer);
Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition); Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
AfterConverting (section,mylist); AfterConverting (section,mylist);
return curPos; return curPos;
@ -155,6 +174,7 @@ namespace ICSharpCode.Reports.Core.Exporter
public Point CurrentPosition {get;set;} public Point CurrentPosition {get;set;}
#endregion #endregion
public Rectangle ParentRectangle { public Rectangle ParentRectangle {
get { return parentRectangle; } get { return parentRectangle; }
} }
@ -202,9 +222,7 @@ namespace ICSharpCode.Reports.Core.Exporter
protected void PrepareContainerForConverting(BaseSection section,ISimpleContainer simpleContainer) protected void PrepareContainerForConverting(BaseSection section,ISimpleContainer simpleContainer)
{ {
if (section != null) { FireSectionRendering(section);
FireSectionRendering(section);
}
LayoutRow(simpleContainer); LayoutRow(simpleContainer);
} }

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

@ -18,6 +18,8 @@ namespace ICSharpCode.Reports.Core.Exporter
private BaseReportItem parent; private BaseReportItem parent;
public GroupedRowConverter(IDataNavigator dataNavigator, public GroupedRowConverter(IDataNavigator dataNavigator,
ExporterPage singlePage, ILayouter layouter):base(dataNavigator,singlePage,layouter) ExporterPage singlePage, ILayouter layouter):base(dataNavigator,singlePage,layouter)
{ {
@ -102,13 +104,10 @@ namespace ICSharpCode.Reports.Core.Exporter
section.Items[0].Size = groupSize; section.Items[0].Size = groupSize;
section.Items[1].Size = childSize; section.Items[1].Size = childSize;
childNavigator.Fill(simpleContainer.Items); childNavigator.Fill(simpleContainer.Items);
// int p = base.CurrentPosition.Y;
base.CurrentPosition = ConvertGroupChilds (exporterCollection,section, base.CurrentPosition = ConvertGroupChilds (exporterCollection,section,
simpleContainer,defaultLeftPos,base.CurrentPosition); simpleContainer,defaultLeftPos,base.CurrentPosition);
// Console.WriteLine (" childs delta {0} - container {1}",base.CurrentPosition.Y - p,simpleContainer.Size);
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],base.CurrentPosition); pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],base.CurrentPosition);
@ -134,11 +133,9 @@ namespace ICSharpCode.Reports.Core.Exporter
// 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
Size containerSize = section.Items[0].Size; Size containerSize = section.Items[0].Size;
// int p = base.CurrentPosition.Y; 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);
section.Size = base.RestoreSectionSize; section.Size = base.RestoreSectionSize;
section.Items[0].Size = containerSize; section.Items[0].Size = containerSize;
} }
@ -193,6 +190,7 @@ namespace ICSharpCode.Reports.Core.Exporter
AfterConverting (section,list); AfterConverting (section,list);
retVal = new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer)); retVal = new Point (leftPos,offset.Y + groupCollection[0].Size.Height + 20 + (3 *GlobalValues.GapBetweenContainer));
} else { } else {
base.FireGroupHeaderRendering(groupedRows[0]);
rowSize = groupedRows[0].Size; rowSize = groupedRows[0].Size;
retVal = ConvertStandardRow(exportList,section,groupedRows[0],leftPos,offset); retVal = ConvertStandardRow(exportList,section,groupedRows[0],leftPos,offset);
groupedRows[0].Size = rowSize; groupedRows[0].Size = rowSize;

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

@ -104,7 +104,7 @@ namespace ICSharpCode.Reports.Core.Exporter
containerSize = simpleContainer.Size; containerSize = simpleContainer.Size;
childNavigator.Fill(simpleContainer.Items); childNavigator.Fill(simpleContainer.Items);
// int p = base.CurrentPosition.Y;
base.CurrentPosition = ConvertGroupChilds (exporterCollection, base.CurrentPosition = ConvertGroupChilds (exporterCollection,
section, section,
simpleContainer,defaultLeftPos,base.CurrentPosition); simpleContainer,defaultLeftPos,base.CurrentPosition);
@ -158,9 +158,11 @@ namespace ICSharpCode.Reports.Core.Exporter
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds))
{ {
base.CurrentPosition = ForcePageBreak(exporterCollection,section); base.CurrentPosition = ForcePageBreak(exporterCollection,section);
base.CurrentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,base.CurrentPosition); base.CurrentPosition = ConvertStandardRow (exporterCollection,section,headerRow,defaultLeftPos,base.CurrentPosition);
} }
// int p = base.CurrentPosition.Y; // int p = base.CurrentPosition.Y;
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); // Console.WriteLine ("delta {0} - container {1}",base.CurrentPosition.Y - p,simpleContainer.Size);
@ -211,6 +213,7 @@ namespace ICSharpCode.Reports.Core.Exporter
} else { } else {
rowSize = groupedRow[0].Size; rowSize = groupedRow[0].Size;
base.FireGroupHeaderRendering(groupedRow[0]);
retVal = ConvertStandardRow(exportList,section,groupedRow[0],leftPos,offset); retVal = ConvertStandardRow(exportList,section,groupedRow[0],leftPos,offset);
groupedRow[0].Size = rowSize; groupedRow[0].Size = rowSize;
} }

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

@ -116,6 +116,9 @@ namespace ICSharpCode.Reports.Core.Exporter
baseConverter.SectionRendering += OnSectionRendering; baseConverter.SectionRendering += OnSectionRendering;
baseConverter.GroupHeaderRendering += OnGroupHeaderRendering;
baseConverter.RowRendering += OnRowRendering;
baseConverter.Graphics = base.Graphics; baseConverter.Graphics = base.Graphics;
baseConverter.PageFull += new EventHandler<NewPageEventArgs>(OnPageFull); baseConverter.PageFull += new EventHandler<NewPageEventArgs>(OnPageFull);
@ -131,10 +134,23 @@ namespace ICSharpCode.Reports.Core.Exporter
void OnSectionRendering (object sender,SectionRenderEventArgs e) void OnSectionRendering (object sender,SectionRenderEventArgs e)
{ {
// Console.WriteLine("Datapagebuilder : OnSectionRendering");
base.FireSectionRenderEvent(e.Section,e.RowNumber); base.FireSectionRenderEvent(e.Section,e.RowNumber);
} }
void OnGroupHeaderRendering (object sender, GroupHeaderEventArgs ghea)
{
// Console.WriteLine("Datapagebuilder : OnGroupHeaderRendering");
base.FireGroupHeaderEvent(ghea);
}
void OnRowRendering (object sender,RowRenderEventArgs rrea)
{
// Console.WriteLine("Datapagebuilder : OnRowRendering");
base.FireRowRenderEvent(rrea);
}
#endregion #endregion
private void WritePages () private void WritePages ()

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

@ -15,5 +15,7 @@ namespace ICSharpCode.Reports.Core
PagesCollection Pages{get;} PagesCollection Pages{get;}
event EventHandler<PageCreatedEventArgs> PageCreated; event EventHandler<PageCreatedEventArgs> PageCreated;
event EventHandler<SectionRenderEventArgs> SectionRendering; event EventHandler<SectionRenderEventArgs> SectionRendering;
event EventHandler<GroupHeaderEventArgs> GroupHeaderRendering;
event EventHandler<RowRenderEventArgs> RowRendering;
} }
} }

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

@ -18,6 +18,7 @@ namespace ICSharpCode.Reports.Core.Interfaces
{ {
event EventHandler <NewPageEventArgs> PageFull; event EventHandler <NewPageEventArgs> PageFull;
event EventHandler<SectionRenderEventArgs> SectionRendering; event EventHandler<SectionRenderEventArgs> SectionRendering;
SectionBounds SectionBounds {get;} SectionBounds SectionBounds {get;}
IDataNavigator DataNavigator {get;} IDataNavigator DataNavigator {get;}
Rectangle ParentRectangle {get;} Rectangle ParentRectangle {get;}
@ -36,5 +37,7 @@ namespace ICSharpCode.Reports.Core.Interfaces
{ {
ExporterCollection Convert (BaseReportItem parent,BaseReportItem item); ExporterCollection Convert (BaseReportItem parent,BaseReportItem item);
Point CurrentPosition {get;set;} Point CurrentPosition {get;set;}
event EventHandler<GroupHeaderEventArgs> GroupHeaderRendering;
event EventHandler<RowRenderEventArgs> RowRendering;
} }
} }

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

@ -166,6 +166,8 @@ namespace ICSharpCode.Reports.Core.ReportViewer
ILayouter layouter = new Layouter(); ILayouter layouter = new Layouter();
IReportCreator reportCreator = DataPageBuilder.CreateInstance(reportModel,data,layouter); IReportCreator reportCreator = DataPageBuilder.CreateInstance(reportModel,data,layouter);
reportCreator.SectionRendering += new EventHandler<SectionRenderEventArgs>(PushPrinting); reportCreator.SectionRendering += new EventHandler<SectionRenderEventArgs>(PushPrinting);
reportCreator.GroupHeaderRendering += new EventHandler<GroupHeaderEventArgs>(GroupHeaderRendering);
reportCreator.RowRendering += new EventHandler<RowRenderEventArgs>(RowRendering);
reportCreator.PageCreated += OnPageCreated; reportCreator.PageCreated += OnPageCreated;
reportCreator.BuildExportList(); reportCreator.BuildExportList();
ShowCompleted(); ShowCompleted();
@ -192,7 +194,7 @@ namespace ICSharpCode.Reports.Core.ReportViewer
private void PushPrinting (object sender,SectionRenderEventArgs e) private void PushPrinting (object sender,SectionRenderEventArgs e)
{ {
string sectionName = e.Section.Name; string sectionName = e.Section.Name;
/*
if (sectionName == ReportSectionNames.ReportHeader) { if (sectionName == ReportSectionNames.ReportHeader) {
Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportHeader); Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportHeader);
} }
@ -216,6 +218,22 @@ namespace ICSharpCode.Reports.Core.ReportViewer
else{ else{
throw new WrongSectionException(sectionName); throw new WrongSectionException(sectionName);
} }
*/
}
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 RowRendering (object sender,RowRenderEventArgs rrea)
{
Console.WriteLine("ReportViewer - RowRendering :");
} }
#endregion #endregion

Loading…
Cancel
Save