2016-08-09 2 views
0

いくつかの入力選択と「実行」ボタンに基づいて、結果のGridViewが生成されています。バック・ボタンまたはリフレッシュにクライアント・スクリプトが再登録されないようにする

グリッドにデータが入力されると、「印刷」ボタンが表示されます。

このPrintボタンは、GridViewデータをDataTableに保存し、ユーザーセッションに保存します。

これは、印刷プレビューとオプションを使ってページを印刷するための新しいウィンドウをポップアップするためのJavaScriptスクリプトを登録します。

ScriptManager.RegisterClientScriptBlockコールが何とか再登録されているため、ページから離れてナビゲートして、また更新したときにプリントポップアップが再表示されるという問題があります。

クライアントスクリプトを明示的に消去する方法はありますか?私はまた、このライフサイクルのどこで除去を行うのか分かりません。論理的には、実行された直後のみである可能性があります。なぜなら、他の時間で実行されない可能性があるからです。ここで

は私の印刷ボタンをクリックコードです:

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); 
} 
+0

あなたは 'IsPostBack'のチェックをしていますか?あなたは 'Page_Load'イベントのコードを表示できますか? – MethodMan

+0

私はかなり長いです。基本的に 'if(!IsPostBack)...入力のデフォルトセットのデータを読み込み、グリッドにデータを取り込みます...'それはコードが役に立たないかどうかわからないので、クライアントスクリプトを登録しません。 –

+0

私の意見では助けてください。なぜなら、戻るボタンが押されたときに何がヒットしているのかを知る必要があるからです。あなたはブレークポイントの束を設定して、同じことを繰り返すコードをステップ実行するときにyourseflを見ます。それを試みた? – MethodMan

答えて

0

あなたはそれが既に登録されていますかどうかをテストするためにpage_loadClientScriptManager.IsClientScriptBlockRegisteredを使用してみましたか?その場合は、空のスクリプトで再度登録してください。詳細については、hereを参照してください。

+0

これはどのように毎回スクリプトをクリアしませんか? 'onload' javascript関数は' Page_Load'の後に起こるので、あなたのソリューションはいつでも、私がそれを実行したいときにそれをクリアするように見えます。 –

関連する問題