Browse Source

Aggregates in GroupHeader

reports
Peter Forstmeier 12 years ago
parent
commit
35f3790175
  1. 11
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/ExpressionRunner.cs
  2. 15
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  3. 13
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

11
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/ExpressionRunner.cs

@ -27,20 +27,23 @@ namespace ICSharpCode.Reporting.Expressions
this.pages = pages; this.pages = pages;
this.dataSource = dataSource; this.dataSource = dataSource;
this.reportSettings = reportSettings; this.reportSettings = reportSettings;
Visitor = new ExpressionVisitor(reportSettings);
} }
public void Run() public void Run()
{ {
var visitor = new ExpressionVisitor (reportSettings); Visitor = new ExpressionVisitor (reportSettings);
if (dataSource.SortedList != null) { if (dataSource.SortedList != null) {
visitor.SetCurrentDataSource(dataSource.SortedList); Visitor.SetCurrentDataSource(dataSource.SortedList);
} }
if (dataSource.GroupedList != null) { if (dataSource.GroupedList != null) {
visitor.SetCurrentDataSource(dataSource.GroupedList); Visitor.SetCurrentDataSource(dataSource.GroupedList);
} }
visitor.Run(pages); Visitor.Run(pages);
} }
public ExpressionVisitor Visitor {get; private set;}
} }
} }

15
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs

@ -189,12 +189,16 @@ namespace ICSharpCode.Reporting.PageBuilder
#region Visitors #region Visitors
protected void RunExpressions(ReportSettings reportsettings,CollectionDataSource dataSource) protected void SetupExpressionRunner (ReportSettings reportsettings,CollectionDataSource dataSource){
{ ExpressionRunner = new ExpressionRunner(Pages,reportsettings,dataSource);
var expressionRunner = new ExpressionRunner(Pages,reportsettings,dataSource);
expressionRunner.Run();
} }
// protected void RunExpressions(ReportSettings reportsettings,CollectionDataSource dataSource)
// {
//// var expressionRunner = new ExpressionRunner(Pages,reportsettings,dataSource);
// ExpressionRunner.Run();
// }
protected void RunDebugVisitor() protected void RunDebugVisitor()
{ {
@ -216,7 +220,8 @@ namespace ICSharpCode.Reporting.PageBuilder
internal Point DetailEnds {get; private set;} internal Point DetailEnds {get; private set;}
// internal ExpressionVisitor ExpressionVisitor {get; private set;} internal ExpressionRunner ExpressionRunner {get;private set;}
internal Rectangle DetailsRectangle { internal Rectangle DetailsRectangle {
get { get {

13
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

@ -37,12 +37,13 @@ namespace ICSharpCode.Reporting.PageBuilder
public override void BuildExportList() public override void BuildExportList()
{ {
CreateDataSource(); CreateDataSource();
SetupExpressionRunner(ReportModel.ReportSettings,DataSource);
base.BuildExportList(); base.BuildExportList();
BuildDetail(); BuildDetail();
BuildReportFooter(); BuildReportFooter();
AddPage(CurrentPage); AddPage(CurrentPage);
UpdatePageInfo(); UpdatePageInfo();
RunExpressions(ReportModel.ReportSettings,DataSource); ExpressionRunner.Run();
var formatVisitor = new FormatVisitor(); var formatVisitor = new FormatVisitor();
formatVisitor.Run(Pages); formatVisitor.Run(Pages);
var dv = new DebugVisitor(); var dv = new DebugVisitor();
@ -77,6 +78,7 @@ namespace ICSharpCode.Reporting.PageBuilder
DataSource.Fill(groupHeader.Items,grouping.FirstOrDefault()); DataSource.Fill(groupHeader.Items,grouping.FirstOrDefault());
var headerRow = converter.ConvertToExportContainer(groupHeader); var headerRow = converter.ConvertToExportContainer(groupHeader);
headerRow.Location = new Point(headerRow.Location.X,groupHeader.Location.Y); headerRow.Location = new Point(headerRow.Location.X,groupHeader.Location.Y);
var headerItems = converter.CreateConvertedList(groupHeader.Items); var headerItems = converter.CreateConvertedList(groupHeader.Items);
@ -86,6 +88,8 @@ namespace ICSharpCode.Reporting.PageBuilder
sectionContainer.ExportedItems.Add(headerRow); sectionContainer.ExportedItems.Add(headerRow);
EvaluateExpressionsInGroups(sectionContainer,grouping);
pagePosition = new Point(CurrentSection.Location.X, pagePosition.Y + sectionContainer.DesiredSize.Height + 1); pagePosition = new Point(CurrentSection.Location.X, pagePosition.Y + sectionContainer.DesiredSize.Height + 1);
// Set Position Child Elements // Set Position Child Elements
@ -119,6 +123,13 @@ namespace ICSharpCode.Reporting.PageBuilder
} }
void EvaluateExpressionsInGroups(ExportContainer sectionContainer, IGrouping<object, object> grouping)
{
ExpressionRunner.Visitor.SetCurrentDataSource(grouping);
ExpressionRunner.Visitor.Visit(sectionContainer);
}
void BuildSortedDetails(IContainerConverter converter,Point startPosition){ void BuildSortedDetails(IContainerConverter converter,Point startPosition){
var exportRows = new List<IExportContainer>(); var exportRows = new List<IExportContainer>();

Loading…
Cancel
Save