2012-02-14 58 views
5

z tego co przeczytałem, przycisk drukowania reportviewer nie działa w przeglądarce Google Chrome i Firefox, ponieważ jest wykonany z formantem ActiveX, który działa tylko w IE. Więc próbowałem zrobić przycisk asp.net poza raportem i wydrukować raport programowo, ale to jest ból i zastanawiałem się, czy istnieje prostsze obejście, aby raport został wydrukowany w Google Chrome.Przycisk wydruku Report Viewer w przeglądarce Google Chrome

Edytuj/Aktualizuj: Znalazłem ten przycisk wydruku raportu, który powinien działać w przeglądarce Firefox i Google Chrome. Wygląda na to, że działa w przeglądarce Firefox, ale drukuje mi pustą stronę w Google Chrome. http://cafalse.blogspot.com/2011/04/reportviewer-print-button-for-firefox.html

Odpowiedz

1

Jeśli nie masz nic przeciwko dodaniu własnego przycisku gdzieś na stronie. Działa to tylko wtedy, gdy Twój sposób generowania raportu wygląda podobnie do mojego. Zasadniczo biorę raport, renderuję go na bajty i wysyłam te bajty jako odpowiedź w formacie pdf. Spowoduje to otwarcie pliku w formacie PDF, który jest obsługiwany przez większość przeglądarek, takich jak Chrome. To wymaga od użytkownika wykonania dodatkowego kroku i kliknięcia przycisku drukowania.

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(); 
Powiązane problemy