防止在后退按钮或刷新时重新注册客户端脚本

时间:2016-08-09 19:07:17

标签: javascript c# asp.net post

我有一个基于一些输入选择和“开始”按钮填充的结果的GridView。

填充网格后,会出现“打印”按钮。

此“打印”按钮将GridView数据存储在DataTable中,并将其存储在用户会话中。

然后注册一个'onload'javascript客户端脚本,通过弹出一个带有打印预览的新窗口和打印页面的选项。

问题是当我离开页面并导航回来时,当我刷新它时,打印弹出窗口会重新显示,我猜测是因为ScriptManager.RegisterClientScriptBlock调用get以某种方式重新注册。

有没有办法可以明确地清除客户端脚本?我也不知道在这个生命周期中你会去除哪个。逻辑上它只能在执行后立即执行,因为在任何其他时间,它可能会阻止它运行。

这是我的打印按钮点击代码:

protected void btnPrintSummary_Click(object sender, EventArgs e)
{
    DataTable dtPrint = ...
    Session["Print_DataTable"] = dtPrint;
    Session["Print_Sort"] = ViewState["Sort"];
    ScriptManager.RegisterClientScriptBlock(this, Page.GetType(), "onload", "<script type=\"text/javascript\">OpenWindow('printpopup.aspx','print_patrol_summary',750,600,',scrollbars=yes');</script>", false);
}

1 个答案:

答案 0 :(得分:0)

您是否尝试在ClientScriptManager.IsClientScriptBlockRegistered中使用page_load来测试它是否已经注册?在它有的情况下,只需用空脚本再次注册它。有关更多文档,请参阅here