c# - 此自定义打印按钮和用于 rdlc 报告的 Java 脚本代码仅打印一页
问题描述
我知道 rdlc 报告的打印按钮在 IE 以外的任何浏览器中都不起作用,因此在寻找自定义代码以在其他浏览器(Chrome、Firefox)中启用它时 - 我发现了以下 HTML 和 Java 脚本代码启用打印但仅适用于一页的报告。如果有人为我提供使用自定义打印按钮打印多页的解决方案,那将非常有帮助。
(注意:- 我使用的是 VS2019,MS ReportViewer 11.0)
这是代码
HTML
<asp:Button runat="server" CssClass="btn-addschedule-bot" Style="margin-left: 10px;" ID="btnPrint" CausesValidation="true" ValidationGroup="vgSubmit" OnClientClick="printReportClick();" Text="Print Report" />
<div style="border: 1px solid #A7B0E8; margin: 0px 10px; padding: 5px; float: left;">
<rsweb:ReportViewer ID="rptViewer" runat="server" Height="500px" Style="-ms-overflow-y: scroll" Width="1100px" ShowToolBar="False" ShowParameterPrompts="False" ShowCredentialPrompts="False"></rsweb:ReportViewer>
</div>
Java 脚本
<script type="text/javascript">
function printReport(report_ID) {
var rv1 = $('#' + report_ID);
var iDoc = rv1.parents('html');
// Reading the report styles
var styles = iDoc.find("head style[id$='ReportControl_styles']").html();
if ((styles == undefined) || (styles == '')) {
iDoc.find('head script').each(function () {
var cnt = $(this).html();
var p1 = cnt.indexOf('ReportStyles":"');
if (p1 > 0) {
p1 += 15;
var p2 = cnt.indexOf('"', p1);
styles = cnt.substr(p1, p2 - p1);
}
});
}
if (styles == '') { alert("Cannot generate styles, Displaying without styles.."); }
styles = '<style type="text/css">' + styles + "</style>";
//--- Reading the report html
var table = rv1.find("div[id$='_oReportDiv']");
if (table == undefined) {
alert("Report source not found.");
return;
}
//-- Generating a copy of the report in a new window
var docType = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd">';
var docCnt = styles + table.parent().html();
var docHead = '<head><title>Printing ...</title><style>body{margin:5;padding:0;}</style></head>';
var winAttr = "location=yes, statusbar=no, directories=no, menubar=no, titlebar=no, toolbar=no, dependent=no, width=720, height=600, resizable=yes, screenX=200, screenY=200, personalbar=no, scrollbars=yes";;
var newWin = window.open("", "_blank", winAttr);
writeDoc = newWin.document;
writeDoc.open();
writeDoc.write(docType + '<html>' + docHead + '<body onload="window.print();">' + docCnt + '</body></html>');
writeDoc.close();
// The print event will fire as soon as the window loads
newWin.focus();
// uncomment to autoclose the preview window when printing is confirmed or canceled.
// newWin.close();
};
function printReportClick() {
printReport('<%=rptViewer.ClientID %>');
}
</script>
我的代码来源:http: //blog.binaryrepublik.com/2016/11/default-print-button-in-ssrs-report-is.html#.X-KkRtgzaUk
提前致谢!
解决方案
推荐阅读
- json - JSON 格式不正确
- css - 当其容器/父元素悬停时将css样式应用于元素
- dart - 通过滑动更改路线
- selenium - Selenium ChromeDriver 异常
- mysql - node.js 中 Google Cloud mySQL 的连接字符串是什么?
- flask - 如果用户通过社交登录登录,移动应用程序如何使用后端 API 进行身份验证?
- javascript - 我的 HTML5 画布游戏在帧之间不断闪烁
- c# - 如何在 C# 中定义一个可继承的树类来构建由不同类类型组成的树状数据结构?
- r - 查找多个时间范围的最近时间
- node.js - 调整 Firestore ServerTimestamp