ポストバックが走るたびに実行されるので「画面が閉じないポストバックを走らせる」ボタンなどを押したときに「閉じるフラグ」を"0"にする処理を行う
とすると、もしヘッダのリンクボタンの他にもポストバックするもの(ページングとか選択・編集・削除とかのボタン)があればそれらにも OnClientClick を設定しなければならないという面倒なことになるのですが、それはどうするのですか?
そのようなものはなくてヘッダのリンクボタンだけだったとしても、それがいくつあるのか分かりませんが、RowCreated イベントあたりでヘッダのリンクボタン全てを探して OnClientClick を設定しなければならないというのは面倒です。
代わりに form 要素の onsubmit 属性にフラグを 0 にするスクリプトを設定してはいかがですか?
どのようにするかの具体例ですが、まず Page_Load あたりで ClientScriptManager.RegisterOnSubmitStatement メソッドを使って以下のようにします。
protected void Page_Load(object sender, EventArgs e)
{
string csname = "OnSubmitScript";
Type cstype = this.GetType();
ClientScriptManager cs = Page.ClientScript;
if (!cs.IsOnSubmitStatementRegistered(cstype, csname))
{
string cstext = "SetFlag();";
cs.RegisterOnSubmitStatement(cstype, csname, cstext);
}
}
そうすると html ソースでは form 要素の onsubmit 属性に以下のスクリプトが設定されます。
<form method="post" onsubmit="javascript:return WebForm_OnSubmit();" ...>
加えて、以下のスクリプトがインラインで配置されます。
<script type="text/javascript">
//<![CDATA[
function WebForm_OnSubmit() {
SetFlag();
return true;
}
//]]>
</script>
なので、SetFlag() メソッドでフラグを 0 にすれば望むことができそうな気がします。お試しください。
もし期待通りにならなかった場合は、どこがどのように期待と異なるか書いてください。