打印页面并关闭它

时间:2012-09-18 13:19:44

标签: c# javascript

如何打印页面并自动关闭?

我打开一个新窗口/页面,点击按钮:

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&amp;SelId=9" type="application/pdf">

我认为由于这个进程插件,我无法关闭此窗口。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用此功能 - 在关闭之前在窗口上添加Focus

<script type="text/javascript">
    window.print();
    window.onfocus = function() { window.close(); }
</script>
相关问题