如何打印页面并自动关闭?
我打开一个新窗口/页面,点击按钮:
protected void ASPxButton_GenerOrd_Click(object sender, EventArgs e)
{
string AdrUrl = "Print_Ordo.aspx?SoinId=" + Soin_Id + "&SelId=" + TempId;
ClientScript.RegisterStartupScript(this.GetType(), "newWindow", String.Format("<script>window.open('{0}');</script>", AdrUrl));
}
我的Print_Ordo.aspx:
<head runat="server">
<title></title>
<script> window.print(); window.close();</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<dx:ReportViewer ID="ReportViewer_Ordo" runat="server">
</dx:ReportViewer>
</div>
</form>
</body>
</html>
和我的Print_Ordo.aspx.cs:
public partial class Print_Ordo : System.Web.UI.Page
{
string Soin_ID = "", SelectedID = "";
protected void Page_Load(object sender, EventArgs e)
{
Soin_ID = Request.QueryString["SoinId"];
SelectedID = Request.QueryString["SelId"];
//ReportViewer_Ordo.Report = new XtraReport_Ordo(Convert.ToInt32(Soin_ID), SelectedID);
//ReportViewer_Ordo.PageByPage = false;
var xtraReport_Pricipal = new XtraReport_Ordo(Convert.ToInt32(Soin_ID), SelectedID);
using (MemoryStream ms = new MemoryStream())
{
try
{
PdfExportOptions opts = new PdfExportOptions();
opts.ShowPrintDialogOnOpen = true;
xtraReport_Pricipal.ExportToPdf(ms, opts);
ms.Seek(0, SeekOrigin.Begin);
byte[] report = ms.ToArray();
Page.Response.ContentType = "application/pdf";
Page.Response.Clear();
Page.Response.OutputStream.Write(report, 0, report.Length);
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
finally
{
ms.Close();
}
}
}
}
问题是它没有自动关闭。我尝试过:
self.close();
window.close();
top.close();
这些都不起作用。有什么想法吗?
PS:我通过Firebug看看它:
<embed width="100%" height="100%" name="plugin" src="http://172.18.1.253:4001/source/Print_Ordo.aspx?SoinId=4&SelId=9" type="application/pdf">
我认为由于这个进程插件,我无法关闭此窗口。
答案 0 :(得分:2)
您可以尝试使用此功能 - 在关闭之前在窗口上添加Focus
<script type="text/javascript">
window.print();
window.onfocus = function() { window.close(); }
</script>