1. The first time the report has been requested I load in a private variable:
Code: Select all
string reportToLaunch = Path.Combine(@"c:\path", "report.mrt");
_CostificationMOReport = new StiReport();
_CostificationMOReport.Load(reportToLaunch);
_CostificationMOReport.Compile();
Code: Select all
_CostificationMOReport.DataSources["MyDS"].Parameters.Clear();
_CostificationMOReport.CompiledReport.DataSources["MyDS"].Parameters.Clear();
_CostificationMOReport.DataSources["MyDS"].Parameters.Add(new Stimulsoft.Report.Dictionary.StiDataParameter("@pID", "1", 22, 50));
_CostificationMOReport.CompiledReport.DataSources["MyDS"].Parameters.Add(new Stimulsoft.Report.Dictionary.StiDataParameter("@pID", "1", 22, 50));
Code: Select all
_CostificationMOReport.Render(false);
_viewer.Report = _CostificationMOReport;
Code: Select all
//clear pages
_viewer.Report =null;
_CostificationMOReport.CompiledReport.RenderedPages.Clear();
//clear old parameters
_CostificationMOReport.DataSources["MyDS"].Parameters.Clear();
_CostificationMOReport.CompiledReport.DataSources["MyDS"].Parameters.Clear();
//inject new parameters
_CostificationMOReport.DataSources["MyDS"].Parameters.Add(new Stimulsoft.Report.Dictionary.StiDataParameter("@pID", "2", 22, 50));
_CostificationMOReport.CompiledReport.DataSources["MyDS"].Parameters.Add(new Stimulsoft.Report.Dictionary.StiDataParameter("@pID", "2", 22, 50));
//render
_CostificationMOReport.Render(false);
//re-assign to report viewer
_viewer.Report = _CostificationMOReport;
//I tried even this, but doesn't work
// _CostificationMOReport.ViewerControl = _viewer;
// _CostificationMOReport.Show();
// _CostiticationMOReport.InvokeRefreshViewer();
If this is the wrong way, how can I re-use the same report without re-compiling it each time (avoiding memory leaks and improving performance)?
thanks in advance
[Stimulsoft Reports .NET 2012.2]