Problem with Subreport

Stimulsoft Reports.WEB discussion
Post Reply
MartinRoth
Posts: 10
Joined: Mon Sep 04, 2017 7:44 am

Problem with Subreport

Post by MartinRoth »

Hi

I have a report called header.mrt which contains the BusinessObject "User", generated as such:

e.Report.RegBusinessObject ("User", MyUser);
e.Report.Dictionary.SynchronizeBusinessObjects (3);

This report is running just fine. But if used as a Subreport, linked by filename in another Report like so

e.Report.Load ("MainReport.mrt")
e.Report.RegBusinessObject ("User", MyUser);
e.Report.RegBusinessObject ("otherData", MyOtherData);
e.Report.Dictionary.SynchronizeBusinessObjects (3);

there is no data shown in the subreport. What am I doing wrong?

TIA
Martin
Alex K.
Posts: 6488
Joined: Thu Jul 29, 2010 2:37 am

Re: Problem with Subreport

Post by Alex K. »

Hello,

Please send us a sample project which reproduces the issue for analysis.

Thank you.
MartinRoth
Posts: 10
Joined: Mon Sep 04, 2017 7:44 am

Re: Problem with Subreport

Post by MartinRoth »

OK, here's a sample as a WebSite project.
First create Header.mrt by calling DesignHeader.aspx. This uses a business object of class MyUser . It has a static instance.

Then create MainReport.mrt by calling DesignMainReport.aspx. It too uses MyUser and some other arbitrary data. Now I added a subreport in the designer. This subreport links to the Header.mrt file on my harddisk (you will need to change the file location, btw. I also tried URL linking, didn't work)

If you view MainReport.mrt with ShowMainReport.aspx the Subreport does not contain any data, as if it doesn't know about MyUser...

Thanks

Edit: I can't attach my zip File. Here's the link: https://drive.google.com/a/dynabyte.ch/ ... sp=sharing
HighAley
Posts: 8431
Joined: Wed Jun 08, 2011 7:40 am
Location: Stimulsoft Office

Re: Problem with Subreport

Post by HighAley »

Hello, Martin.

You should register the Business Objects in the sub-report too.
You could do this using the GetSubReport event of the report.
Here is a working code:

Code: Select all

public partial class ShowMainReport : System.Web.UI.Page {
	protected void Page_Load (object sender, EventArgs e) {
		string reportFile = HttpContext.Current.Server.MapPath ("App_Data/MainReport.mrt");
		StiReport report = new StiReport ();
		report.Load (reportFile);

		var cust1 = new Customer ("Test1", "TestCity1", "www.test1.com");
		var cust2 = new Customer ("Test2", "TestCity2", "www.test2.com");
		var cust3 = new Customer ("Test3", "TestCity3", "www.test3.com");
		var list = new List<Customer> { cust1, cust2, cust3 };
		//report.RegBusinessObject ("User", MyUser.Current);
		report.RegBusinessObject ("Customer", list);
		report.Dictionary.SynchronizeBusinessObjects (3);
		List<string> assemblies = new List<string> (report.ReferencedAssemblies);
		assemblies.Add (System.Reflection.Assembly.GetAssembly (typeof (MyUser)).Location);
		report.ReferencedAssemblies = assemblies.ToArray ();
        report.GetSubReport += Report_GetSubReport;
		StiWebViewer1.Report = report;
	}

    private void Report_GetSubReport(object sender, StiGetSubReportEventArgs e)
    {
        string reportFile = HttpContext.Current.Server.MapPath("App_Data/Header.mrt");
        StiReport report = new StiReport();
        report.Load(reportFile);
        report.RegBusinessObject("User", MyUser.Current);
        report.Dictionary.SynchronizeBusinessObjects(3);
        List<string> assemblies = new List<string>(report.ReferencedAssemblies);
        assemblies.Add(System.Reflection.Assembly.GetAssembly(typeof(MyUser)).Location);
        report.ReferencedAssemblies = assemblies.ToArray();
        e.Report = report;
    }
}
Thank you.
MartinRoth
Posts: 10
Joined: Mon Sep 04, 2017 7:44 am

Re: Problem with Subreport

Post by MartinRoth »

Thanks, this is working nicely
Alex K.
Posts: 6488
Joined: Thu Jul 29, 2010 2:37 am

Re: Problem with Subreport

Post by Alex K. »

Hello

We are always glad to help you!
Please let us know if you need any additional help.

Thank you.
Post Reply