解决方法
我不认为它使用ActiveX,因为在表中的onclick事件有一个简单的:
ReportFramerpvReport.GetReportFrame().contentWindow.print()
无论如何,我用我自己的打印功能替换了这个打印的东西,因为上面的代码不能在FF上工作
我知道这很丑,但它的作品! (只需用ControlID替换ControlName值,并确保在页面中添加jQuery lib)
$(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,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); }