2011-02-09 22 views
2

私はthis threadを見つけましたが、残念ながらこの問題を解決しようとしていましたが、私はすでにすべての方法を持っているので問題を理解できていないようです。UpdatePanel条件付きupdatemodeが動作しない

<asp:UpdatePanel ID="upPnlGeneralinfo" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true"> 
     <ContentTemplate> 
     <script type="text/javascript"> 
      Sys.Application.add_load(BindPageLoad); 
     </script> 

各コースの異なるIDを持っている:

私は、それぞれがこのような.jsファイルのセットアップに関数を呼び出す3 updatepanelsを持っています。コントロールが更新パネル内のポストバックを呼び出すときはいつでもjsファイルでconsole.log( "jsファイルを実行中")を追加して3回呼び出されていることがわかります。これは3つの更新パネルがすべて更新されていることを意味しますただ一つの代わりに。

すべてのトリガーはそれぞれのアップデートパネルの内側にあるので、トリガーを追加する必要はありません(私はちょうど確認しただけで違いはありません)。 UpdateMode =条件付きでこれを解決してはいけませんか?

また、私のコードでは、updatepanel.update()を呼び出すコードはありません。私はそれぞれのコントロールにそれぞれのパネルに追加しようとしましたが、それも違いはありませんでした。

アイデア?

答えて

2

必ずしもすべての更新パネルが更新されているわけではありません。

MSDNドキュメントでは、同期(全面ポストバック)ポストバックまたは非同期(部分ページ)ポストバックのいずれかの後にクライアントのロードイベントが発生すると報告されています。

これは、アップデートパネルのうちの1つだけが意図したとおりに更新されていることを意味しますが、3つのイベントハンドラはすべて、MS Ajaxを使用して接続されたために非同期ポストバックの後に再実行されます。

MSDNの抜粋:アプリケーションとPageRequestManagerクラス
Sys.Application.loadイベント

  • Sys.Application.add_load(ハンドラ)の

    クライアント・イベント。すべてのスクリプトが がロードされていると $を作成して使用して作成され アプリケーション内のすべてのオブジェクトが初期化された後に発生

。負荷 イベントは、 非同期ポストバックを含むサーバー へのすべてのポストバックに対して発生します。

通常のページ処理中 ブラウザでは、ウィンドウ:状態に部分ページレンダリングイベントでのみとき、ページ全体のロードを実行するさまざまなイベントをワーキングhttp://msdn.microsoft.com/en-us/library/bb386417.aspx

-
。オンロードDOMイベント が発生したときにページが最初にロード
- http://msdn.microsoft.com/en-us/library/bb398976.aspx

この通常のDOM負荷法、MSのAjaxの一部ではありません。

したがって、クライアントコードを通常のwindow.onloadイベントに接続すると、最初のフルページが読み込まれたときにのみ実行され、連続する非同期ポストバックでは実行されません(更新パネル/部分リフレッシュ)。

あなたが望む結果を提供するためにこの知識が利用可能かどうかはわかりません。おそらく、ハイブリッドブラウザ/ MS Ajaxクライアントソリューションが存在する場合、ソリューションのMS Ajaxオブジェクトだけを見ていることでしょう。