我的ReportViewer
页面上有一个asp.net
。客户需要下一个功能:
单击打印按钮时自定义打印>报告在浏览器的新标签/窗口中以pdf格式打开,并自动弹出打印对话框。
我所做的是从报表查看器中保存呈现的pdf是会话并在浏览器中打开新选项卡: 警告[]警告;
string[] streamids;
string mimeType;
string encoding;
string extension;
byte[] myBytes;
string reportName = hfReportName.Value;
myBytes = rvReport.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings);
Session["myBytes"] = myBytes;
Session["mimeType"] = mimeType;
Session["fileName"] = reportName + "_" + ddlOffGroup.SelectedItem + "." + extension;
Response.Buffer = true;
Response.Clear();
Response.Write("<script>");
Response.Write(String.Format("window.open('{0}')", ResolveUrl("PrintPage.aspx")));
Response.Write("</script>");
然后在PrintPage.aspx
我有这个:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["myBytes"] == null || Session["mimeType"] == null || Session["fileName"] == null)
Response.Redirect("ErrorPage.aspx?errStr=No print content found. Sorry");
else
{
Response.Buffer = true;
Response.Clear();
Response.ContentType = Session["mimeType"].ToString();
Response.AddHeader("content-disposition", "inline; filename=" + Session["fileName"].ToString());
Response.BinaryWrite((byte[])Session["myBytes"]);
Response.Flush();
//Response.End();
}
}
基本上,报告打开正常,但我无法弄清楚如何显示打印对话框(与Ctrl + P功能相同)。我试图在页面上添加这个:
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
window.print();
});
</script>
但是加载页面时没有任何反应。有什么建议吗? 谢谢!
答案 0 :(得分:0)
看起来像是javascript错误。你确定浏览器中没有javascript错误吗? JQuery .js文件是否在指定位置?
可能javascript不起作用,因为页面的内容类型不是text / html。尝试删除
Response.ContentType = Session["mimeType"].ToString();