1

Asp.netコードビハインドファイルにJavaスクリプトを登録していますが、これは正常に機能しています。現在、同じページにいくつかの更新パネルがあります。問題は、更新パネルのいずれかに変更があるたびに、このスクリプトが自動的に呼び出されることです。これを止める方法はありますか?ページから更新パネルを削除できません。このスクリプトもアプリケーションの非常に重要な部分です。この状況では、[保存]ボタンがクリックされたとき、または更新パネルに他のボタンがほとんどないときに更新ルーチンが呼び出されたとき、および更新に登録されているボタンのいずれかがあったときに、アラート(タイムアウト機能が設定されたradアラート)を呼び出しています。パネルがクリックされると、次のスクリプトが不本意に呼び出されます。誰の助けも本当にありがたいです。

以下は私のPage.ClientScriptです

                string radalertscript = "<script language='javascript'> Sys.Application.add_load(function(sender, e) {var oWnd = radalert('dialogMessage', 400, 140, 'Saved');window.setTimeout(function () { oWnd.Close(); }, 3000);});</script>";
                Page.ClientScript.RegisterStartupScript(this.GetType(), "radalert", radalertscript);
4

2 に答える 2

2

同じキーに空の文字列を割り当てradalertて、スクリプトを削除できます。

if(some_condition)
    Page.ClientScript.RegisterStartupScript(this.GetType(), "radalert", "");

編集:コメントに基づいて、使用せずに簡単にすることができますRegisterStartupScript

コードビハインド

btnSave.Attributes.Add("", "saveButtonFunction();");

Javascriptで

<script language='javascript'>

   Sys.Application.add_load(function(sender, e) {
           if(btnSaveClicked){
              var oWnd = radalert('dialogMessage', 400,140, 'Saved');
              window.setTimeout(function () { oWnd.Close(); }, 3000);
              btnSaveClicked = false;
           }
    });

    btnSaveClicked = false;
    function saveButtonFunction(){
       btnSaveClicked = true;
    };    

</script>
于 2013-01-15T12:00:53.823 に答える
1

アディルさん、ありがとうございました。私はすでに同じアプローチに従いましたが、ほとんど違いはありません。コードビハインドファイルからJavaScriptを取り出し、Sys.Application.add_loadイベントを次のように登録しました

    Sys.Application.add_load(DisplayRadAlertHandler);
    function DisplayRadAlertHandler() {
        var getMessage = document.getElementById('<%=radAlertDialogHidden.ClientID%>').value;
        if (getMessage != "") {
            document.getElementById('<%=radAlertDialogHidden.ClientID%>').value = "";
            var oWnd = radalert(getMessage, 400, 140, 'Saved');
            window.setTimeout(function () { oWnd.Close(); }, 3000);
        }
    }

ここでは、コードビハインドファイルからの非表示の入力フィールドにアラートメッセージを設定しています。上記のイベントハンドラーでは、非表示のフィールドをリセットしてメッセージを表示するよりも、メッセージが存在するかどうかを確認しています。あなたのアプローチも正しく、私はあなたの答えをマークしましたが、私は複数の場所(保存ボタン、更新ルーチンなど)からメッセージを表示しているので、非表示の入力フィールドに値を割り当て、上記のイベントハンドラーでリセットするよりも適切に見えます。助けてくれてありがとう。

于 2013-01-16T10:24:18.967 に答える