1

RDLC(VS2010)を使用して、Webページ(MVC3)上の単純な出荷ラベルをPDFにレンダリングしています。RDLC(ShipmentId)に渡す必要のあるパラメーターが1つあります。そのパラメーターを渡すと、渡したパラメーターを表示することになっているテキストボックスを除いて、レポートが正しくレンダリングされます。

RDLCのテキストボックスの値は「=Parameters!ShipmentId.Value」に設定されています。

私のコードは次のようになります。

    shipment.ShipmentId = "123TEST";

    Warning[] warnings;
    string mimeType;
    string[] streamids;
    string encoding;
    string filenameExtension;

    LocalReport report = new LocalReport();
    report.ReportPath = @"Labels\ShippingLabel.rdlc";
    report.Refresh();

    report.EnableExternalImages = true;

    ReportParameter param = new ReportParameter("ShipmentId", shipment.ShipmentId, true);
    report.SetParameters(param);

    report.Refresh();

    byte[] bytes = report.Render("PDF", null, out mimeType, out encoding, out filenameExtension, out streamids, out warnings);

    return new FileContentResult(bytes, mimeType);
4

1 に答える 1

0

問題は、ProcessingMode.Localを使用しているときにReportViewerがReportParametersを持つことができないことであることが判明しました。代わりに、パラメーターの代わりにデータソースを使用するようにコードを変更しました。

        Warning[] warnings;
        string mimeType;
        string[] streamids;
        string encoding;
        string filenameExtension;

        var viewer = new ReportViewer();
        viewer.ProcessingMode = ProcessingMode.Local;

        viewer.LocalReport.ReportPath = @"Labels\ShippingLabel.rdlc";
        viewer.LocalReport.EnableExternalImages = true;

        var shipLabel = new ShippingLabel { ShipmentId = shipment.ShipmentId, Barcode = GetBarcode(shipment.ShipmentId) };

        viewer.LocalReport.DataSources.Add(new ReportDataSource("ShippingLabel", new List<ShippingLabel> { shipLabel }));
        viewer.LocalReport.Refresh();

        var bytes = viewer.LocalReport.Render("PDF", null, out mimeType, out encoding, out filenameExtension, out streamids, out warnings);
于 2012-06-12T17:30:54.847 に答える