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 source
typeReportSource.TypeName =
typeof
(Invoice).AssemblyQualifiedName;
// Adding the initial parameter values
typeReportSource.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 modified
var 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 instance
var 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!