I'm trying to build a report programmatically due to the complexity and dynamic nature of the requirement I am faced with.
The best way I can think is to have one 'shell' report that composes many different child reports.
However when I just try to do a light version of the above with a simple (not data-bound) child report that just prints 'hello world!' I get nothing rendered out. When I run the Child report on it's own I receive the expected results.
Below is my code for the shell report
and the 'ExecutiveSumarySection' report:
Not totally sure what I'm doing wrong here but I was following many similar examples provided in the forums by Telerik Reporting team on doing this type of report.
The best way I can think is to have one 'shell' report that composes many different child reports.
However when I just try to do a light version of the above with a simple (not data-bound) child report that just prints 'hello world!' I get nothing rendered out. When I run the Child report on it's own I receive the expected results.
Below is my code for the shell report
private
Telerik.Reporting.Report Build()
{
Telerik.Reporting.Report mainReport =
new
Telerik.Reporting.Report();
Telerik.Reporting.DetailSection detail =
new
Telerik.Reporting.DetailSection();
mainReport.Items.Add(detail);
Unit unitX = Unit.Inch(0.1);
Unit unitY = Unit.Inch(0.1);
SizeU size =
new
SizeU(Unit.Inch(1), Unit.Inch(0.5));
List<Telerik.Reporting.Report> childrenReports =
new
List<Telerik.Reporting.Report>();
ExecutiveSummarySection executiveSummary =
new
ExecutiveSummarySection();
childrenReports.Add(executiveSummary);
foreach
(Telerik.Reporting.Report child
in
childrenReports)
{
Telerik.Reporting.SubReport sub =
new
Telerik.Reporting.SubReport
{
Location =
new
PointU(unitX, unitY),
Size = size
};
unitY = unitY.Add(Unit.Inch(1));
Telerik.Reporting.InstanceReportSource childInstanceReportSource =
new
InstanceReportSource();
childInstanceReportSource.ReportDocument = child;
sub.ReportSource = childInstanceReportSource;
detail.Items.Add(sub);
}
detail.Height = Unit.Inch(childrenReports.Count + 2D);
return
mainReport;
//return executiveSummary;
}
and the 'ExecutiveSumarySection' report:
using
AGP.Data.Repositories;
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
using
Telerik.Reporting;
using
Telerik.Reporting.Drawing;
namespace
AGP.Reports
{
public
class
ExecutiveSummarySection : Report
{
public
ExecutiveSummarySection()
{
InitializeComponent();
//DataBindControls();
}
private
void
DataBindControls()
{
//going to data bind later to EF5 backed repository
//ModelContextUnitOfWork uow = new ModelContextUnitOfWork();
//DocumentEFRepository docRepo = new DocumentEFRepository(uow);
//this.DataSource = docRepo.All.ToList();
}
#region Component Designer generated code
/// <summary>
/// Required method for telerik Reporting designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private
void
InitializeComponent()
{
Telerik.Reporting.Drawing.StyleRule styleRule1 =
new
Telerik.Reporting.Drawing.StyleRule();
this
.pageHeaderSection1 =
new
Telerik.Reporting.PageHeaderSection();
this
.detail =
new
Telerik.Reporting.DetailSection();
this
.pageFooterSection1 =
new
Telerik.Reporting.PageFooterSection();
this
.panel1 =
new
Telerik.Reporting.Panel();
this
.textBox1 =
new
Telerik.Reporting.TextBox();
((System.ComponentModel.ISupportInitialize)(
this
)).BeginInit();
//
// pageHeaderSection1
//
this
.pageHeaderSection1.Height = Telerik.Reporting.Drawing.Unit.Inch(2D);
this
.pageHeaderSection1.Name =
"pageHeaderSection1"
;
//
// detail
//
this
.detail.Height = Telerik.Reporting.Drawing.Unit.Inch(2.1000001430511475D);
this
.detail.Items.AddRange(
new
Telerik.Reporting.ReportItemBase[] {
this
.textBox1});
this
.detail.Name =
"detail"
;
//
// pageFooterSection1
//
this
.pageFooterSection1.Height = Telerik.Reporting.Drawing.Unit.Inch(2D);
this
.pageFooterSection1.Name =
"pageFooterSection1"
;
//
// panel1
//
this
.panel1.Name =
"panel1"
;
this
.panel1.Size =
new
Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(2D), Telerik.Reporting.Drawing.Unit.Inch(1D));
//
// textBox1
//
this
.textBox1.Location =
new
Telerik.Reporting.Drawing.PointU(Telerik.Reporting.Drawing.Unit.Inch(0D), Telerik.Reporting.Drawing.Unit.Inch(0D));
this
.textBox1.Name =
"textBox1"
;
this
.textBox1.Size =
new
Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(1.2000001668930054D), Telerik.Reporting.Drawing.Unit.Inch(0.40000024437904358D));
this
.textBox1.Value =
"Hello World!"
;
//
// ExecutiveSummarySection
//
this
.Items.AddRange(
new
Telerik.Reporting.ReportItemBase[] {
this
.pageHeaderSection1,
this
.detail,
this
.pageFooterSection1});
this
.Name =
"Report1"
;
this
.PageSettings.Margins =
new
Telerik.Reporting.Drawing.MarginsU(Telerik.Reporting.Drawing.Unit.Inch(1D), Telerik.Reporting.Drawing.Unit.Inch(1D), Telerik.Reporting.Drawing.Unit.Inch(1D), Telerik.Reporting.Drawing.Unit.Inch(1D));
this
.PageSettings.PaperKind = System.Drawing.Printing.PaperKind.Letter;
this
.Style.BackgroundColor = System.Drawing.Color.White;
styleRule1.Selectors.AddRange(
new
Telerik.Reporting.Drawing.ISelector[] {
new
Telerik.Reporting.Drawing.TypeSelector(
typeof
(Telerik.Reporting.TextItemBase)),
new
Telerik.Reporting.Drawing.TypeSelector(
typeof
(Telerik.Reporting.HtmlTextBox))});
styleRule1.Style.Padding.Left = Telerik.Reporting.Drawing.Unit.Point(2D);
styleRule1.Style.Padding.Right = Telerik.Reporting.Drawing.Unit.Point(2D);
this
.StyleSheet.AddRange(
new
Telerik.Reporting.Drawing.StyleRule[] {
styleRule1});
this
.Width = Telerik.Reporting.Drawing.Unit.Inch(6D);
((System.ComponentModel.ISupportInitialize)(
this
)).EndInit();
}
#endregion
private
Telerik.Reporting.PageHeaderSection pageHeaderSection1;
private
Telerik.Reporting.DetailSection detail;
private
Panel panel1;
private
TextBox textBox1;
private
Telerik.Reporting.PageFooterSection pageFooterSection1;
}
}
Not totally sure what I'm doing wrong here but I was following many similar examples provided in the forums by Telerik Reporting team on doing this type of report.