我有一個基於幾個輸入選擇和「Go」按鈕獲取填充結果的GridView。防止客戶端腳本被重新註冊在後退按鈕或刷新
網格填充後,會出現「打印」按鈕。
此Print按鈕將GridView數據存儲在DataTable中並將其存儲在用戶Session中。
然後,它通過彈出一個帶有打印預覽和打印頁面選項的新窗口來註冊一個'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);
}
你有任何'IsPostBack'檢查..?你可以顯示「Page_Load」事件的代碼嗎? – MethodMan
我可以,它很長。本質上它會檢查'if(!IsPostBack)...爲默認輸入集合填充數據並填充網格...'它不會註冊任何客戶端腳本,所以我不知道代碼本身是否會有所幫助 –
幫助我的意見..因爲我們需要知道當後退按鈕被按下時會發生什麼......您可以設置一堆斷點並在單步執行代碼時查看yoursefl以重複相同的事情。試過嗎? – MethodMan