I'm trying to set my parameters trough my WPF application and after print my report. The printing works but the parameters are empty.
var report = new Badge();report.ReportParameters["VisitId"].Value = code;report.ReportParameters["VisitorName"].Value = visitorName;report.ReportParameters["CompanyName"].Value = companyName;report.ReportParameters["RegularVisitor"].Value = regularVisitor ? "REGULAR" : "VISITOR";PrinterSettings printerSettings = new PrinterSettings();printerSettings.PrinterName = ConfigurationManager.AppSettings["PrinterNameLabel"]);PrintController standardPrintController = new StandardPrintController();ReportProcessor reportProcessor = new ReportProcessor();reportProcessor.PrintController = standardPrintController;TypeReportSource typeReportSource = new TypeReportSource();typeReportSource.TypeName = report.GetType().AssemblyQualifiedName;reportProcessor.PrintReport(typeReportSource, printerSettings);
As attached file my parameter settings. Any ideas? Thanks for the help
5 Answers, 1 is accepted
0
Accepted
Hello Inge,
Once the type name of the report is passed to the TypeReportSource, a new instance of the Badge report will be created internally by the reporting engine.
Thus, you need to set the report parameters via the TypeReportSource object, and not via the report instance. This way they will be passed correctly to the report:
Regards,
Nasko
Telerik by Progress
Once the type name of the report is passed to the TypeReportSource, a new instance of the Badge report will be created internally by the reporting engine.
Thus, you need to set the report parameters via the TypeReportSource object, and not via the report instance. This way they will be passed correctly to the report:
var typeReportSource = new Telerik.Reporting.TypeReportSource();// Specifying the assembly qualified name of the Report class for the TypeName of the report sourcetypeReportSource.TypeName = typeof(Invoice).AssemblyQualifiedName;// Adding the initial parameter valuestypeReportSource.Parameters.Add(new Telerik.Reporting.Parameter("OrderNumber", "SO43659"));Regards,
Nasko
Telerik by Progress
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
0
Inge
Top achievements
Rank 1
answered on 10 Feb 2017, 07:27 AM
Thanks for the help! This solution made it work.
0
Inge
Top achievements
Rank 1
answered on 13 Feb 2017, 09:27 AM
Is it possible to do the same for a list of objects? For example insert this list into rows for a table:
public static void PrintVisitList(List<Visit> visits) { try { //print en report objects PrinterSettings printerSettings = new PrinterSettings(); PrintController standardPrintController = new StandardPrintController(); ReportProcessor reportProcessor = new ReportProcessor(); TypeReportSource typeReportSource = new TypeReportSource(); //set printersettings printerSettings.PrinterName = ConfigurationManager.AppSettings["PrinterNameLabel"]; reportProcessor.PrintController = standardPrintController; // Specifying the assembly qualified name of the Report class for the TypeName of the report source typeReportSource.TypeName = typeof(VisitList).AssemblyQualifiedName; //Adding data foreach (var visit in visits) { VisitList.tblVisitorsRow row = ds.tblVisitors.NewtblVisitorsRow(); row.VisitorKey = visit.VisitId; row.Arrival = visit.Arrival; row.FirstName = visit.FirstName; row.LastName = visit.LastName; row.CompanyName = visit.CompanyName; row.PhoneMobile = visit.PhoneMobile; row.VehicleLicensePlate = visit.VehicleLicensePlate; row.AppointmentWith = visit.AppointmentWith; ds.tblVisitors.Rows.Add(row); } //print command reportProcessor.PrintReport(typeReportSource, printerSettings); } catch (Exception ex) { LogRepository.AddLog(new Log { Data = ex.InnerException?.Message ?? ex.Message }); } }
For example the foreach loop?
0
Accepted
Hi Inge,
In your code snippet you are updating data at run-time. This will require you to modify the report before processing it and to use an InstanceReportSource instead of the TypeReportSource.
For example:
Report parameters' values can be updated through the report instance's ReprotParameters collection or the InstanceReportSource.Parameters collection.
Regards,
Stef
Telerik by Progress
In your code snippet you are updating data at run-time. This will require you to modify the report before processing it and to use an InstanceReportSource instead of the TypeReportSource.
For example:
//create an instance of the report that can be modifiedvar reportInstance = new VisitList();reportInstance.DataSource=ds.tblVisitors;//or if data is visualized by a nested data item like a Table/List/Crosstab//we use the Find method - http://docs.telerik.com/reporting/overload-telerik-reporting-reportitembase-itemcollection-find//(reportInstance.Items.Find("table1",true) as Telerik.Reporting.Table).DataSource = ds.tblVisitors;//use an InstanceReportSource to wrap the modified report instancevar IRS = new InstanceReportSource { ReportDocument = reportInstance};Report parameters' values can be updated through the report instance's ReprotParameters collection or the InstanceReportSource.Parameters collection.
Regards,
Stef
Telerik by Progress
Do you want to have your say when we set our development plans?
Do you want to know when a feature you care about is added or when a bug fixed?
Explore the
Telerik Feedback Portal
and vote to affect the priority of the items
0
Inge
Top achievements
Rank 1
answered on 17 Feb 2017, 07:18 AM
Thanks for the help but the find won't work for me. I fixed it this way:
//create an instance of the report that can be modified var reportInstance = new VisitList { //add visitlist table1 = {DataSource = visits} }; //use an InstanceReportSource to wrap the modified report instance var instanceReportSource = new InstanceReportSource { ReportDocument = reportInstance };
Problem solved for me!