【问题标题】:Local RDLC Report showing '#Error' where report parameters should be displayed显示“#Error”的本地 RDLC 报告应显示报告参数
【发布时间】:2012-04-19 15:10:43
【问题描述】:

我正在使用 RDLC (VS2010) 在网页 (MVC3) 上将简单的运输标签呈现为 PDF。我有一个参数需要传递给 RDLC (ShipmentId)。我传递了该参数,并且报告正确呈现,除了应该显示我传入的参数的文本框。

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);

【问题讨论】:

    标签: c# reportviewer rdlc microsoft-reporting


    【解决方案1】:

    问题原来是ReportViewer在使用ProcessingMode.Local时不能有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);
    

    【讨论】: