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. 19
      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 @@ -27,20 +27,23 @@ namespace ICSharpCode.Reporting.Expressions
this.pages = pages;
this.dataSource = dataSource;
this.reportSettings = reportSettings;
Visitor = new ExpressionVisitor(reportSettings);
}
public void Run()
{
var visitor = new ExpressionVisitor (reportSettings);
Visitor = new ExpressionVisitor (reportSettings);
if (dataSource.SortedList != null) {
visitor.SetCurrentDataSource(dataSource.SortedList);
Visitor.SetCurrentDataSource(dataSource.SortedList);
}
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,11 +189,15 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -189,11 +189,15 @@ namespace ICSharpCode.Reporting.PageBuilder
#region Visitors
protected void RunExpressions(ReportSettings reportsettings,CollectionDataSource dataSource)
{
var expressionRunner = new ExpressionRunner(Pages,reportsettings,dataSource);
expressionRunner.Run();
protected void SetupExpressionRunner (ReportSettings reportsettings,CollectionDataSource dataSource){
ExpressionRunner = new ExpressionRunner(Pages,reportsettings,dataSource);
}
// protected void RunExpressions(ReportSettings reportsettings,CollectionDataSource dataSource)
// {
//// var expressionRunner = new ExpressionRunner(Pages,reportsettings,dataSource);
// ExpressionRunner.Run();
// }
protected void RunDebugVisitor()
@ -216,7 +220,8 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -216,7 +220,8 @@ namespace ICSharpCode.Reporting.PageBuilder
internal Point DetailEnds {get; private set;}
// internal ExpressionVisitor ExpressionVisitor {get; private set;}
internal ExpressionRunner ExpressionRunner {get;private set;}
internal Rectangle DetailsRectangle {
get {

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

@ -37,12 +37,13 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -37,12 +37,13 @@ namespace ICSharpCode.Reporting.PageBuilder
public override void BuildExportList()
{
CreateDataSource();
SetupExpressionRunner(ReportModel.ReportSettings,DataSource);
base.BuildExportList();
BuildDetail();
BuildReportFooter();
AddPage(CurrentPage);
UpdatePageInfo();
RunExpressions(ReportModel.ReportSettings,DataSource);
ExpressionRunner.Run();
var formatVisitor = new FormatVisitor();
formatVisitor.Run(Pages);
var dv = new DebugVisitor();
@ -77,15 +78,18 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -77,15 +78,18 @@ namespace ICSharpCode.Reporting.PageBuilder
DataSource.Fill(groupHeader.Items,grouping.FirstOrDefault());
var headerRow = converter.ConvertToExportContainer(groupHeader);
headerRow.Location = new Point(headerRow.Location.X,groupHeader.Location.Y);
var headerItems = converter.CreateConvertedList(groupHeader.Items);
converter.SetParent(sectionContainer, headerItems);
headerRow.ExportedItems.AddRange(headerItems);
sectionContainer.ExportedItems.Add(headerRow);
EvaluateExpressionsInGroups(sectionContainer,grouping);
pagePosition = new Point(CurrentSection.Location.X, pagePosition.Y + sectionContainer.DesiredSize.Height + 1);
// Set Position Child Elements
@ -119,6 +123,13 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -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){
var exportRows = new List<IExportContainer>();
@ -126,7 +137,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -126,7 +137,7 @@ namespace ICSharpCode.Reporting.PageBuilder
foreach (var element in DataSource.SortedList) {
var sectionContainer = CreateContainerForSection(CurrentPage, pagePosition);
var convertedItems = FillAndConvert(sectionContainer,element,ReportModel.DetailSection.Items,converter);
sectionContainer.ExportedItems.AddRange(convertedItems);
MeasureAndArrangeContainer(sectionContainer);
@ -208,7 +219,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -208,7 +219,7 @@ namespace ICSharpCode.Reporting.PageBuilder
detail.Parent = parent;
return detail;
}
void InsertContainer(ExportContainer sectionContainer)
{

Loading…
Cancel
Save