2012-02-14 10 views
5

私が読んだことは、IEでのみ動作するActiveXコントロールで作成されているため、Google ChromeとFirefoxではreportviewerの印刷ボタンが機能しません。だから私は、レポートの外側にasp.netボタンを作成し、プログラムをプログラムで印刷しようとしていましたが、それは苦痛であり、私はGoogle Chromeでレポートを印刷するための簡単な回避策があるのだろうかと思っていました。Google ChromeのReportviewerのプリントボタン

編集/更新:FirefoxとGoogle Chromeで動作するはずのこのレポートビューアの印刷ボタンを見つけました。Firefox用のようですが、Google Chromeに空白のページが印刷されます。 http://cafalse.blogspot.com/2011/04/reportviewer-print-button-for-firefox.html

答えて

1

自分のボタンをページのどこかに追加しても構いません。これは、レポートを作成する方法が似ている場合にのみ機能します。基本的に私はレポートを取ってバイトにレンダリングし、そのバイトをpdf形式のレスポンスとして送信します。これにより、ChromeなどのほとんどのブラウザでサポートされているPDF形式のファイルが開きます。これには、ユーザーは余分なステップを踏んで印刷をクリックする必要があります。

ServerReport sr = new ServerReport(); 
ReportViewer.ProcessingMode = ProcessingMode.Remote; 
sr = ReportViewer.ServerReport; 
sr.ReportServerUrl = new Uri("http://****/****"); 
sr.ReportPath = "/Report"; 
ReportParameter paramDateFrom = new ReportParameter(); 
ReportParameter paramDateTo = new ReportParameter(); 
ReportParameter paramState = new ReportParameter(); 
ReportParameter paramCounty = new ReportParameter(); 
string dateFrom = TB_Date_From.Text; 
string dateTo = TB_Date_To.Text; 
string state = DDL_State.SelectedValue; 
string county = DDL_County.SelectedValue; 
paramDateFrom.Name = "DateFrom"; 
paramDateFrom.Values.Add((dateFrom != "" ? dateFrom : null)); 
paramDateTo.Name = "DateTo"; 
paramDateTo.Values.Add((dateTo != "" ? dateTo : null)); 
paramState.Name = "State"; 
paramState.Values.Add((state != "" ? Common_Functions.resolveStateID(state) : null)); 
paramCounty.Name = "County"; 
paramCounty.Values.Add((county != "" ? Common_Functions.resolveCountyID(county) : null)); 
ReportViewer.ServerReport.SetParameters(new ReportParameter[] { paramDateFrom, paramDateTo, paramState, paramCounty }); 
// DUMP PDF TO BROWSER 
Warning[] warnings; 
string[] streamids; 
string mimeType, encoding, extension; 
byte[] bytes = ReportViewer.ServerReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings); 
Response.Buffer = true; 
Response.Clear(); 
Response.ContentType = mimeType; 
Response.AddHeader("content-disposition", "inline; filename=myfile." + extension); 
Response.BinaryWrite(bytes); 
string pdfPath = Server.MapPath("~") + "pdf." + extension; 
FileStream pdfFile = new FileStream(pdfPath, FileMode.Create); 
pdfFile.Write(bytes, 0, bytes.Length); 
pdfFile.Close(); 
Response.Flush(); 
Response.End(); 
関連する問題