4

TreeViewsとUpdatePanelsを使用して、かなり日常的なAJAXパターンであると思うものをコーディングしようとしています。私の状況はこれです:

UpdatePanel内にTreeViewがあります。別のUpdatePanel内にリテラルがあります。ユーザーがTreeView内のノードをクリックすると、リテラルの内容が更新されます。さて、すべてが非同期であるため、クリックしてからリテラルコンテンツが更新されるまでにはもちろんタイムラグがあります。この間、私は2つのことをしたいと思います。

1)UpdateProgressを表示し、

2)リテラルの内容をクリアします

これは、新しいテキストが非同期で読み込まれている間、ユーザーが古いコンテンツを見つめる必要がないようにするためです。

簡単な方法がわからないようです(2)。私はクライアント側のコールバックを読み、GetCallbackEventReferenceを使用してきましたが、一見単純な問題に対する非常に複雑なアプローチのようです。

理想的には、TreeViewをそのままにして作業を行いたいと思います。自分でコンテンツを取得して、JSを使用してTreeViewに追加したくありません。クライアント側でノード変更イベントを検出し、Literalをクリアして、TreeViewに通常の操作を実行させたいだけです。

これは可能ですか?それとも、クライアントからのコールバックは私の唯一の選択肢ですか?

4

2 に答える 2

1

PageRequestManagerASP.NET AJAX ライブラリの を試してみたいと思うでしょう。PRM の MSDN リファレンスは、http://msdn.microsoft.com/en-us/library/bb311028.aspxです。

マイクロソフトは、UpdatePanel 内で TreeView に問題が発生する可能性があると述べており、特に TreeView が大きい場合は、パフォーマンスにも細心の注意を払う必要があると述べています (UpdatePanel のパフォーマンスの最適化に関する私の記事を参照してください - http:/ /www.aaron-powell.com/blog.aspx?id=1195 )。jQuery プラグインのようなものを実際に検討する必要があります (例: http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ )。

しかし、実際に質問に答えるには、次のことが必要です。

  • BeginRequestその後、リテラルをクリアし、Loading を表示することもできるイベント ハンドラーを用意します (私は UpdateProgress のファンではありません。自分で行うことで得られるより詳細な制御を好みます) 。
  • イベントを使用EndRequestして Loading コンポーネントが確実に消えるようにする

ページの 2 番目の UpdatePanelの TreeView を作成するか、TreeViewAsyncPostbackTriggerの非同期ポストバック中に Update メソッドを呼び出すこともできます。

于 2008-12-23T08:06:03.397 に答える
0

私は同じ問題を抱えていて、非表示にしたい領域に重なる非表示のhtml要素を作成することで修正しました。ポストバック中にonSubmitを表示し、window.onloadで非表示にします。きれいではありませんが、動作し、高速である必要があります。

于 2011-04-25T08:45:27.820 に答える