我有一个使用ASP.NET中的ReportViewer控件的Web应用程序。报告在Web应用程序中以.rdlc文件定义。 除打印功能外,报告工作得很好。当用户单击报表标题部分中的“打印”图标时,Web应用程序似乎尝试安装SQL Server(?!)。这是出现的文件下载对话框:
任何人都可以猜测发生了什么事吗?我不知道在哪里开始调试这个,因为这一切都发生在ReportViewer代码中的“幕后”。
感谢您提供任何建议。
答案 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);