2011-01-19 36 views
0

私はASP .NETで作業しています。私は、ボタンをクリックして無効にし、コードを蹴っていくつかの機能を実行し、一旦終了したらボタンをもう一度有効にする必要があります。このプロジェクトでは、UpdatePanelを使用しているため、1回のポストバックは発生しません。私の知る限りが正常に取得することができてきたとのPage_Load機能の背後にあるコードでそれを無効にするには、この構文を使用している:無効/有効化ボタン

btnConnect.Attributes.Add("onClick", "document.body.style.cursor = 'wait';this.disabled = true;" + ClientScript.GetPostBackEventReference(btnConnect, string.Empty) + ";"); 

これはボタンを無効にし、背後にあるコードを実行することができます。私は、コードの中で実行されている関数が実行されたら、ボタンを再び有効にする方法を理解できません。コードの背後にあるときにキャプチャする方法はありますか?

+0

ボタンもUpdatePanelの中​​にありますか?その後、非同期ポストバックが返ってきたら書き直す必要があります。 (これはちょっと仮定しているので、答えの代わりにコメントとして書きます。) – Heinzi

答えて

0

あなたは無効にした後、タイムアウトアプローチを使用することができます。

var that = this; //pointer to button 
window.setTimeout(function() { document.body.style.cursor = '';that.disabled = false; }, 1000); 

このアプローチは、あまりにもダブルポストバックを防ぐために役立ちます。

更新パネルが終了すると、Sys.WebForms.PageRequestManager.endRequestイベントが発生します。イベントハンドラを追加して、別の方法としてボタンを再び有効にします。上記に加えて

1

代わりにjQueryを使用できますか?クリックで

  • 、ボタンを必要
  • 再有効化ボタンURL呼び出しが戻るようにASP.NET URLへ
  • コール/ POSTを無効にします。このような流れを考えてみましょう。ページ要素を更新し、リダイレクトし、必要に応じて警告します。
0

...

はい、あなたはのUpdatePanelを使用していますが、ポストバックが発生しています。

したがって、処理が正常に終了した後、上で追加したonClickの属性を削除し、コード内のボタンを有効にしてから、UpdatePanelでUpdate()を発行しようとしましたか?

関連する問題