0

ASP.net AJAX プロジェクト (WebForms) には UpdatePanel があり、UpdatePanel には UpdatePanels を含む複数のネストされたコントロールがあり、基本的にコントロール ツリーがあります。

保護者による管理は、サイトの巨大で非常に重要な部分です。私はそれに触れることができません (また、多くの場所で再利用されています)。UpdatePanel は現在の位置にとどまる必要があります。

更新パネルの子コントロールには、コントロールの一部だけを更新できるように、互いに分離された (また、UpdatePanel で分離された) 機能があります。

基本的に Page_Load() では、すべての子コントロールをデータで満たすコードがあります。たとえば、子コントロールのデータを変更する削除機能がある場合です。手順は次のとおりです。

最初にコントロール (ParentControl) を表示します。

  • Page_Load() -> データのフルフィル

削除をクリックすると:

  • Page_Load() -> fullfill data /* ここで呼び出したくない! */

  • イベント 削除 -> データの変更

           ->fullfill data again!
    

AsyncPostbacksでプログラム上の違いを作り、Page_Load() 関数を使用して、イベントを実行したいだけのときにフルデータを呼び出さないようにする必要があります。

UpdatePanel の外では、 IsAsyncPostback 、 IsCallBack 、 IsPostback を使用できますがこれ確かですが、これらのプロパティは AsyncPostback では変更されません

2 つの AsycPostback があり、それらを区別する必要があります。

  1. まず、これはデータを表示して初期化します。
  2. イベントの実行とコントロールの変更

誰かが実装するテクニック、またはこのタイプの機能を持つある種のフレームワークを知っていますか?

誰もこの問題を抱えていますか?

4

1 に答える 1

1

私は他の答えを削除しました-あなたが最初の問題とは完全に異なる問題を説明しているのを見て、前のバージョンの担当者を維持しながら私の答えを完全に置き換えるのは愚かなようでした。

非同期コールバックの原因となるイベントを確認するか、各更新パネルのコントロールの値を確認して、何が変更されたかを確認する必要があります。

これは、更新パネルを使用しないことにした主な理由の1つです。非同期のポストバックにより、ページのライフサイクルイベントのほとんどすべてが発生し、このような複雑な状況で何が起こっているかを実際に確認することが非常に困難になります。私が怒りで更新パネルを使用したのは、個人のサイトでデータグリッドをラップアラウンドして、大量のデータを処理するときにページ全体のリロードを保存するときだけでした。


編集して追加:

助けようとして、簡単なグーグルがこれを見つけました(AJAXとASP.NET 2.0コールバックフレームワーク)

どのコントロールがリクエストを開始しましたか?

ポストバックリクエストでは、ScriptManageridがパラメータとして機能します。一般に、値は部分的なポストバックを開始したコントロールのIDです。|の形式です。コントロールは、直接またはUpdatePanelを介してScriptManagerに登録できます。ScriptManager.AsyncPostBackSourceElementIDプロパティは、部分的なポストバックを開始したコントロールのIDを返します。

構文例:

ScriptManager1=UpdatePanel1|Button1

このページでは、ライフサイクル、およびプロセスへのさまざまなフックについても詳しく説明しています。

于 2009-09-15T19:35:56.777 に答える