2010-10-08 203 views
0

我有一個利用ASP.NET中的ReportViewer控件的Web應用程序。這些報告是在Web應用程序中的.rdlc文件中定義的。 除了打印功能外,這些報告效果很好。當用戶單擊報表標題部分中的「打印」圖標時,看起來該Web應用程序嘗試安裝SQL Server(?!)。這裏是出現的文件下載對話框: alt text從ASP.NET Web應用程序中的ReportViewer控件打印問題

任何人都可以提供猜測發生了什麼?我不確定在哪裏開始調試,因爲這一切都發生在ReportViewer代碼的「幕後」。

感謝您的任何建議,你可以給。

回答

2

它不是試圖安裝的SQL Server,它是一個用於打印報告文件的activex /插件,單擊是,安裝並嘗試打印。

+0

謝謝您的回覆。實際上,無論我做什麼,我都可以得到相同的結果,安裝,不要安裝,甚至只是在顯示對話框時暫停一會兒......它們都會使瀏覽器中的選項卡崩潰,並且網站消失,然後瀏覽器「恢復」一個空白標籤。這是在IE中必須是我使用的瀏覽器(每個客戶端) – rogdawg 2010-10-08 13:48:53

+0

試試這個: 轉到Program Files \ Microsoft SQL Server \ MSSQL.x \ Reporting Services \ ReportServer \ bin,並將這些文件複製到Windows \ Downloaded程序文件(使用命令行窗口,CMD): - RSClientPrint.dll - rsclientprint.inf - RsClientPrint_1028.rll - RsClientPrint_1031.rll - RsClientPrint_1033.rll - RsClientPrint_1036.rll - RsClientPrint_1040.rll - RsClientPrint_1041.rll - RsClientPrint_1042.rll - RsClientPrint_2052.rll - RsClientPrint_3082.rll 然後,註冊RSClientPrint.dll(regsvr32 [路徑] RSClientPrint.dll)。如果您在那裏找不到這些文件,請解壓縮rsclientprint.cab。 – 2010-10-08 14:45:53

+0

感謝您關注此事。我仍然得到一個錯誤...這次,我選擇安裝ActiveX的東西。它遇到了一個問題,問我是否想要調試問題(使用調試器),我選擇了否,並且它以與之前相同的方式崩潰了瀏覽器(選項卡)。我想我應該停止在報告上打印。我的客戶可能無法下載ActiveX控件來打印。感謝您的幫助。我會告訴他們先導出爲ex​​cel(或PDF),然後打印。非常感謝您的指導。 – rogdawg 2010-10-08 20:23:08

1

是的。在我嘗試同樣的問題之前。但之後,我得到了解決方案。最主要的是,我們無法直接從客戶機打印報告。我發現了兩種在客戶機中打印報告的方法。一個是通過ActiveX控件。客戶端不知道,如何在他們的機器上安裝ActiveX控件,主要是他們不想要那些令人討厭的東西。所以我發現了我們可以通過PDF文件打印的另一種方式。現在所有人都在他們的機器上安裝了Adobe PDF閱讀器。所以我瀏覽過,如何直接打印pdf而不用保存在客戶端機器上。最後我得到了解決方案。步驟如下:

用C#編寫的示例代碼。 i)。)))))))))))))(

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); 
相關問題