Telerik
アプリケーションでレポートを生成していMVC
ます。レポートは、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
レポートがレンダリングされる前に、渡されたパラメーターをキャプチャして評価できるようにする必要がありますが、その方法がわかりません。何か案は?