【问题标题】:ReportViewer not displaying after converting rdlc to pdf将 rdlc 转换为 pdf 后 ReportViewer 不显示
【发布时间】:2016-03-05 22:23:58
【问题描述】:

我有一个报告 rdlc,我刚刚从 vs 2010 迁移到 vs 2012,我正在使用一种方法将 rdlc 文件转换为 pdf 文件并通过电子邮件发送报告。

电子邮件发送成功,但报告抛出此错误:“Referencia a objeto no establecida como instancia de un objeto”。

我猜是我将 rdlc 文件转换为 pdf 时发生了一些事情,然后报告无法读取。

这是我用来将rdlc转换为pdf的方法。

private string ExportReportToPDF(string reportName)
    {
        try
        {
            Warning[] warnings;
            string[] streamids;
            string mimeType;
            string encoding;
            string filenameExtension;
            byte[] bytes = ReportViewer1.LocalReport.Render(
               "PDF", null, out mimeType, out encoding, out filenameExtension,
                out streamids, out warnings);

            string filename = Path.Combine(Path.GetTempPath(), reportName)+".pdf";
            using (var fs = new FileStream(filename, FileMode.Create))
            {
                fs.Write(bytes, 0, bytes.Length);
                fs.Close();
            }

            return filename;
        }
        catch (Exception err)
        {
           // Throws error
        }

    }

之后我只是将文件添加到邮件中并发送。

有什么建议吗?

【问题讨论】:

  • 我发现当我运行以下代码时,reportviewer 改变了它的格式(或者丢失了引用,或者它已经初始化了): ReportViewer1.LocalReport.Render( "PDF", null, out mimeType , out encoding, out filenameExtension, out streamids, out warnings);有没有另一种不使用render方法将rdlc转换为pdf的方法?
  • 您可以查看 iTextSharp 作为替代方案。

标签: c# asp.net pdf visual-studio-2012 rdlc


【解决方案1】:

我不知道为什么,但是在获取要转换为 pdf 的字节后,报告查看器无法正确呈现。

在尝试了不同的方法来解决之后,我发现我只需要再次刷新我的报告查看器,所以在调用 ExportToPDF 方法并发送邮件后,我只添加了以下行:

ReportViewer1.LocalReport.Refresh();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-06
    • 2016-04-16
    • 2021-05-17
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    相关资源
    最近更新 更多