从ASP.NET Web应用程序中的ReportViewer控件打印时出现问题

时间:2010-10-08 13:26:51

标签: asp.net sql reportviewer report

我有一个使用ASP.NET中的ReportViewer控件的Web应用程序。报告在Web应用程序中以.rdlc文件定义。 除打印功能外,报告工作得很好。当用户单击报表标题部分中的“打印”图标时,Web应用程序似乎尝试安装SQL Server(?!)。这是出现的文件下载对话框: alt text

任何人都可以猜测发生了什么事吗?我不知道在哪里开始调试这个,因为这一切都发生在ReportViewer代码中的“幕后”。

感谢您提供任何建议。

2 个答案:

答案 0 :(得分:2)

它不是试图安装的SQL Server,它是打印报告文件的activex /插件,单击是,安装它并尝试打印。

答案 1 :(得分:1)

是。在我尝试同样的问题之前。但在那之后我得到了解决方案。最重要的是,我们无法直接从客户端计算机打印报告。我找到了两种在客户机中打印报表的方法。一个是通过ActiveX控件。客户端不知道,如何在他们的机器中安装ActiveX控件,主要是他们不想要那些令人厌恶的东西。所以我找到了另一种可以通过PDF文件打印的方式。现在所有人都在他们的机器上有adobe pdf阅读器。所以我浏览了,如何直接打印pdf而不保存在客户机中。最后我得到了解决方案。步骤是:

用C#编写的示例代码。

<强> i)中。将报告转换为记忆流:

string reportType = "PDF";
    string mimeType;
    string encoding;
    string fileNameExtension;
    //The DeviceInfo settings should be changed based on the reportType
    ////http://msdn2.microsoft.com/en-us/library/ms155397.aspx 

    string deviceInfo = "<DeviceInfo>" + "  <OutputFormat>PDF</OutputFormat>" + "  <PageWidth>8.27in</PageWidth>" + "  <PageHeight>11.69in</PageHeight>" + "  <MarginTop>0in</MarginTop>" + "  <MarginLeft>0in</MarginLeft>" + "  <MarginRight>0in</MarginRight>" + "  <MarginBottom>0in</MarginBottom>" + "</DeviceInfo>";
    Warning[] warnings;
    string[] streams;
    byte[] renderedBytes;
    //Render the report       
    renderedBytes = _rptViewer.LocalReport.Render(reportType, deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);
    Stream mystream = new MemoryStream(renderedBytes);