1

同じトピックに関する同様の質問をいくつか見ましたが、いずれも私の問題に対処していません。

私は asp.net Web サイトを持っており、データベースが更新された後にユーザーにステータス メッセージ (5 秒で消える asp:label) を表示したいと考えています。

テキストをラベルに割り当ててから、Javascript で非表示にします。

js 部分を整理しました。唯一の問題は、テキストをコントロールに割り当てた後に js 関数を呼び出す方法です。

次のコードでデータベース内の何かを更新しているとしましょう:

<asp:Button ID="btnUploadFiles" runat="server" OnClick="buttonSubmit_Click" Text="Update"  />

コードビハインド

protected void buttonSubmit_Click(object sender, EventArgs e)
    { try{// update the database  
          // change label text to tell the user update succeeded}
      catch(Exception ex){...}
    }

助けてください!

更新: jquery は使用しないでください。プレーンな JavaScript のみを使用してください

4

3 に答える 3

2

「テキストをコントロールに割り当てた後、js 関数を呼び出すにはどうすればよいですか?」という質問に答えるには。ボタンクリックイベント内に「RegisterClientScriptBlock」への呼び出しを追加するだけで、Luke が提供する JavaScript を出力できます。

protected void buttonSubmit_Click(object sender, EventArgs e)
{ 
    try
    {
       // update the database  
       // change label text to tell the user update succeeded
       label.Text = "Message";
       string js = "function hideLabel(){document.getElementById('" + label.ClientID + "').style.display = 'none'};setTimeout(hideLabel, 5000);"
       ClientScript.RegisterClientScriptBlock(this.GetType(), "test", js ,true);
    }
    catch(Exception ex){...}
}
于 2009-02-08T03:07:42.897 に答える
0

Ajax 経由でポストバックしていますか、それとも通常のポストバックですか? 通常のポストバックの場合は、タイマーを設定し、タイマーの期限が切れた後にラベルを非表示にする関数を呼び出す JavaScript をページに登録するだけです。次の例では、タイマーが開始される前に DOM が読み込まれるように jQuery を使用していますが、他の方法もあります。5 秒後にラベルを非表示にします。

function hideLabel(label)
{
   $(label).hide();
}

$(document).ready( function() {
    var label = $('#labelID');
    setTimer(function() { hideLabel(label); ),5000);
});

ドキュメントの読み込みではなく、AJAX 呼び出しの onSuccess コールバックでタイマーを設定することを除いて、AJAX を使用している場合の考え方は基本的に同じです。

于 2009-02-07T22:58:33.367 に答える