2012-02-07 40 views
1

私は2つのコントロールをUpdatePanelに持っています。チェックボックスとタイムピッカー。完全なポストバックなしでイベントを発生させるには?

チェックボックス(イベントCheckedChanged)をクリックすると、タイムピッカーを編集可能(ReadOnly = false)にしたり、その逆を行うようになっています。完全なポストバックを行わずに、CheckedChangedイベントを発生させたい。

JavaScriptを使用しないで回避策がありますか?私は、UpdatePanelのトリガーがどのように管理されているのかよく分かりません。

ありがとうございます!

(asp.net 4.0、C#の)

+1

イベントサーバー側を処理したくないし、Javascriptでも処理したくないのですか?うーん、私はそれ以外の選択肢があるのか​​分からない。あなたの質問を誤解しない限り。 –

+0

私はイベントサーバー側を処理したいです。私はちょうど完全なポストバックをしたくないです – Soader03

答えて

2

残念ながら、UpdatePanelのを使用して、完全なポストバックが発生します。だから、あなたが望んでいなければ、クライアント側のJavaScriptを使用する必要があります。

それほど複雑ではありません。あなたのためにJavaScriptを書くことができる人を見つけてください。これはロケット科学ではありません。

+0

私は見る...ありがとう – Soader03

0

OnInitとOnLoadにコードを追加すると、Request.IsPostbackをチェックして特定のコントロールが原因でコードが実行されるのをスキップできます(ポストバック)。例えば:私はこれをテストしていないので、あなたのチェックボックスが先頭に追加親コントロールのID値であることをそのクライアントIDとユニークIDにつながる他のコントロールにネストされている場合

<asp:CheckBox runat="server" ID="MyCheckbox" AutoPostBack="true" /> 


if(this.Request.IsPostback && this.Request.Form["__EVENTTARGET"] == this.MyCheckbox.ID) 
{ 
    return; 
} 

、その後、上記のこれらの2つの特性を試験します。また、その条件を逆にして、明らかに、そのIFブロック内の完全な本体コードをラップすることができます(そうしたい場合、または1つのメソッドで複数のreturn文を嫌う場合)。

私はよく分かっているといいですが、これはいくつかの処理を節約します。ただし、負の副作用がある可能性があります(たとえば、コントロールツリーにコントロールを動的に追加するコードがサーバーのinit/loadメソッド内にある場合、この場合でも常に実行するようにします。これらのdynコントロールのviewstateは無効になります)。

関連する問題