override internal void RunPage(Pages pgs, Row row)
{
Report r = pgs.Report;
if (IsHidden(r, row))
{
return;
}
base.RunPage(pgs, row);
// need to save the owner report and nest in this defintion
ReportDefn saveReport = r.ReportDefinition;
r.SetReportDefinition(_ReportDefn);
r.Folder = _ReportDefn.ParseFolder; // folder needs to get set since the id of the report is used by the cache
DataSourcesDefn saveDS = r.ParentConnections;
if (this.MergeTransactions)
{
r.ParentConnections = saveReport.DataSourcesDefn;
}
else
{
r.ParentConnections = null;
}
if (_Parameters == null)
{ // When no parameters we only retrieve data once
if (r.Cache.Get(this, "report") == null)
{
r.RunGetData(null);
r.Cache.Add(this, "report", this); // just put something in cache to remember
}
}
else
{
SetSubreportParameters(r, row); // apply the parameters
r.RunGetData(null);
}
SetPageLeft(r); // Set the Left attribute since this will be the margin for this report
SetPagePositionBegin(pgs);
//
// Run the subreport -- this is the major effort in creating the display objects in the page
//
r.ReportDefinition.Body.RunPage(pgs); // create a the subreport items
r.SetReportDefinition(saveReport); // restore the current report
r.ParentConnections = saveDS; // restore the data connnections
SetPagePositionEnd(pgs, pgs.CurrentPage.YOffset);
}