asp.net - SQL Reporting Services-Botón Imprimir no se muestra en Mozilla
firefox reporting-services (5)
Estoy usando servicios de SQL Reporting , está funcionando perfectamente y muestra un botón de impresión en IE , pero no se muestra en Mozilla Firefox.
¿Alguien tiene alguna idea?
He comprobado esta solución, pero no está funcionando:
No es una solución sino un poco de información.
Utilizo SSRS con bastante regularidad para proyectos internos ya que sé que la audiencia objetivo usa IE, pero no la utilizo para aplicaciones web externas ya que he tenido tantos problemas con ella en FF (los recolectores de fechas no funcionan, etc.), aunque Nunca he mirado las opciones del botón de impresión. Sospecho que esto puede ser un problema similar (¡el control del visor de informes está diseñado solo para IE!) ya que parece afectar la barra de herramientas en general.
Saliendo de este http://www.windows-tech.info/15/5fb0fd315e07edf8.php parece que se usan algunos controles ActiveX y FF no hace ActiveX nativamente aunque recuerdo un plugin que permitió que se cargaran controles activex pero donde vi que no puedo recordar.
EDITAR: http://www.iol.ie/~locka/mozilla/plugin.htm Nunca lo he usado y no puedo responderlo, pero hay un complemento aquí.
Para proyectos que se enfrentan a la web, ¡suelo usar Crystal!
HTH
Si está ofreciendo funciones de exportación a través de ReportViewer, el usuario puede exportar a PDF e imprimirlo. No es tan eficiente / ingenioso como un botón de impresión con un solo clic, pero es un trabajo fácil.
No creo que use ActiveX, porque en el evento table onclick hay un simple:
ReportFramerpvReport.GetReportFrame().contentWindow.print()
De todos modos, reemplacé esta impresión con mi propia función de impresión, porque este código anterior no funcionaba en FF ...
Sé que es feo ... ¡pero funciona! (simplemente reemplace el valor de ControlName con su ControlID y asegúrese de agregar jQuery lib en su página)
$(document).ready(function()
{
if ($.browser.mozilla)
{
try
{
var ControlName = ''RptDespesas'';
var innerScript = ''<scr'' + ''ipt type="text/javascript">document.getElementById("'' + ControlName + ''_print").Controller = new ReportViewerHoverButton("'' + ControlName + ''_print", false, "", "", "", "#ECE9D8", "#DDEEF7", "#99BBE2", "1px #ECE9D8 Solid", "1px #336699 Solid", "1px #336699 Solid");</scr'' + ''ipt>'';
var innerTbody = ''<tbody><tr><td><input type="image" style="border-width: 0px; padding: 2px; height: 16px; width: 16px;" alt="Print" src="/Reserved.ReportViewerWebControl.axd?OpType=Resource&Version=9.0.30729.1&Name=Microsoft.Reporting.WebForms.Icons.Print.gif" title="Print"></td></tr></tbody>'';
var innerTable = ''<table title="Print" onmouseout="this.Controller.OnNormal();" onmouseover="this.Controller.OnHover();" onclick="PrintFunc(/''' + ControlName + ''/'); return false;" id="'' + ControlName + ''_print" style="border: 1px solid rgb(236, 233, 216); background-color: rgb(236, 233, 216); cursor: default;">'' + innerScript + innerTbody + ''</table>''
var outerScript = ''<scr'' + ''ipt type="text/javascript">document.getElementById("'' + ControlName + ''_print").Controller.OnNormal();</scr'' + ''ipt>'';
var outerDiv = ''<div style="display: inline; font-size: 8pt; height: 30px;" class=" "><table cellspacing="0" cellpadding="0" style="display: inline;"><tbody><tr><td height="28px">'' + innerTable + outerScript + ''</td></tr></tbody></table></div>'';
$("#" + ControlName + " > div > div").append(outerDiv);
}
catch (e) { alert(e); }
}
});
function PrintFunc(ControlName)
{
setTimeout(''ReportFrame'' + ControlName + ''.print();'', 100);
}
He creado una solución que emula todo el botón de impresión de IE a otros navegadores.
https://.com/a/37455354/1253835
La solución anterior no funcionaba para mí, así que hice los siguientes cambios a la solución anterior después de inspeccionar el html renderizado.
ReportViewerGeneral_ctl05 -> id del buscapersonas
VisibleReportContentReportViewerGeneral_ctl09 -> id del div que contenía el resultado del informe.
pageLoad -> remita esto
function pageLoad() {
if ($.browser.mozilla && !$("#ff_print").length) {
try {
var ControlName = ''ReportViewerGeneral'';
var innerTbody = ''<tbody><tr><td><input type="image" style="border-width: 0px; padding: 2px; height: 16px; width: 16px;" alt="Print" src="/Reserved.ReportViewerWebControl.axd?OpType=Resource&Version=9.0.30729.1&Name=Microsoft.Reporting.WebForms.Icons.Print.gif" title="Print"></td></tr></tbody>'';
var innerTable = ''<table title="Print" onclick="PrintFunc(/''' + ControlName + ''/'); return false;" id="ff_print" style="border: 1px solid rgb(236, 233, 216); background-color: rgb(236, 233, 216); cursor: default;">'' + innerTbody + ''</table>''
var outerDiv = ''<div style="display: inline; font-size: 8pt; height: 30px;" class=" "><table cellspacing="0" cellpadding="0" style="display: inline;"><tbody><tr><td height="28px">'' + innerTable + ''</td></tr></tbody></table></div>'';
$("#ReportViewerGeneral_ctl05 > div").append(outerDiv);
}
catch (e) { alert(e); }
}
}
function PrintFunc() {
var strFrameName = ("printer-" + (new Date()).getTime());
var jFrame = $("<iframe name=''" + strFrameName + "''>");
jFrame
.css("width", "1px")
.css("height", "1px")
.css("position", "absolute")
.css("left", "-2000px")
.appendTo($("body:first"));
var objFrame = window.frames[strFrameName];
var objDoc = objFrame.document;
var jStyleDiv = $("<div>").append($("style").clone());
objDoc.open();
objDoc.write($("head").html());
objDoc.write($("#VisibleReportContentReportViewerGeneral_ctl09").html());
objDoc.close();
objFrame.print();
setTimeout(function () { jFrame.remove(); }, (60 * 1000));
}