2009-07-30 8 views
1

現在、いくつかの動的レンダリングされたページを含む高度なWebアプリケーションを作成しています。このページは、XmlとXsltの組み合わせからメインコンテンツがレンダリングされるプレースホルダーを含む標準ページです。ASP.Net Ajax Collapsible Extender ViewStateの問題

私は最近、動的にレンダリングされるパネルの折りたたみと拡張を可能にするために、ASP.Net Ajax Toolkit折りたたみ可能なエンテインダを追加しようとしています。メインのxsltテンプレートにエクステンダーマークアップを追加しました。すべてが問題ありません。ポストバックが起こり、パネルが初期状態に戻るまで、まあまあです。たとえば、パネルが折りたたまれた状態でページを読み込むと、ポストバック後にページが開いているパネルがリセットされません。この問題は、ビューステート自体に動的コンテンツを格納し、ページが読み込まれるとXmlを再レンダリングするのではなく、viewstateから取得します。

Phew ....問題の背景があります。

ここでは主な質問です。どのように地球上でエクステンダーとJavascriptで対話できますか?私は、ページ変数クライアント側で状態をキャッシュしてから、ポストバック状態のポストバックを再適用できることを確信しました。しかし、これを達成するための文書や知識はないようです。私が見つけた最高のものは、いくつかの非常に単純なjavascriptであり、パネルが拡張されたときや折りたたまれたときに、いくつかのイベントを登録することができます。

私がやりたいことは、相互作用し、各パネルの状態をキャッシュすることです。誰でも何かを提案できますか?

答えて

0

OK、他の誰かが同様のことを達成する必要がある場合に備えて、私は今それを動作させました。

多くの研究の結果、hereのいずれかの方法を使用して、クライアントサイドのイベントに接続できることがわかりました。

Page_Load()イベントのページにプログラムでいくつかの非表示フィールド(ASP.Net HiddenField)を追加し、各エクステンダの名前を1つのフィールドに区切り文字列として追加してから拡張子の状態を保持するために、拡張子ごとのフィールドがあります。ページが一旦戻ってくると、各エクステンダの値がポストされ、Request.Formオブジェクト(そのキーは隠しフィールドIDです)から取得されます。そうでなければ、初期ロードであればデフォルト値を処理します。

次に、onExpandイベントとonCollapseイベントを処理し、特定のエクステンダの隠しフィールドの値を更新する単純なクライアントサイドスクリプトを作成しました。

クライアントスクリプトのpageLoadイベントでは、隠しフィールドの値に基づいてエンティティの状態を設定しました。

シンプルなのは本当に始めるのが好きだと思っていたはずです!

関連する問題