Я создаю отчет Telerik
в приложении MVC
. Отчет обрабатывается прямо в формате pdf, без использования файла Report Viewer
. Я думаю, что правильно передаю параметр из контроллера, но я не могу понять, как и где получить значение параметра в коде отчета, когда отчет обрабатывается. Я хочу динамически заполнять поле изображения в зависимости от значения переданного параметра с помощью User Function
.
Вот мой код контроллера, который открывает отчет. Если я жестко запрограммирую переменную покупателя, я получу правильное изображение для отображения в окне изображения:
public ActionResult PrintPoReport()
{
byte[] contents;
Telerik.Reporting.Processing.RenderingResult result;
using (var reportDocument = new LogisticsReports.Report1())
{
var buyerID = "999999"; //hard code buyerId for testing
var irs = new InstanceReportSource();
irs.ReportDocument = reportDocument;
irs.Parameters.Add(new Parameter("Buyer", "buyerID")); // parameter to determine which jpg will populate picture box. **Never gets to Report1**
Telerik.Reporting.Processing.ReportProcessor rp = new Telerik.Reporting.Processing.ReportProcessor();
result = rp.RenderReport("PDF", irs, null);
contents = result.DocumentBytes;
}
return File(contents, "application/pdf", "P0 #" + id + ".pdf");
}
Код для отчета:
public partial class Report1 : Telerik.Reporting.Report
{
public Report1()
{
InitializeComponent();
var buyer = "999999"; //hard coded for testing...this works!
//Need to capture the passed in parameter here
if (buyer == "111111"){
this.pictureBox1.Value = "http://www.arctecalaska.com/images/signatures/111111.bmp";
}
if (buyer == "999999")
{
this.pictureBox1.Value = "http://www.arctecalaska.com/images/signatures/Ike.jpg";
}
}
}
}
Проблема в том, что параметр покупателя, который я отправляю из контроллера, на самом деле никогда не попадает в отчет. Во время отладки отчет InitializeComponent() запускается, как только код достигает строки:
var reportDocument = new LogisticsReports.Report1
Мне нужно иметь возможность захватывать и оценивать переданный параметр до того, как отчет будет отображаться, но я не понимаю, как это сделать. Есть идеи?