ajaxToolkit:CollapsiblePanelExtenderはAJAX UpdatePanelの更新時に展開/折りたたみ状態を維持しません

私はajaxToolkitを持っています:CollapsiblePanelExtenderと2つのasp:それがコントロールするUpdatePanels(1つのパネルは他のパネルをクリックすると展開されます)。

キックオフするタイマーからAJAXのアップデートを行うまで素晴らしい作品です。ページが更新され、CollapsiblePanelExtenderが折りたたまれます: - P

誰でも、このコントロールが拡大しているパネルの状態を維持する方法を知っていますか?

0
追加された
ビュー: 1

2 答え

私はこの正確な問題にぶつかるのを覚えている

CollapsiblePanelExtenderにはClientStateというプロパティがあり、ViewStateで追跡および管理されていないようです。

手動でHiddenField(または必要ならばViewStateまたはSession)の値を追跡して維持し、AJAX更新時にその値にCPE.ClientStateを復元することができます。

UPDATE
Found a resource that suggests that you simply need to set both Collapsed and ClientState properties. http://weblogs.asp.net/ashicmahtab/archive/2008/11/21/act-collapsiblepanelextender-how-to-collapse-expand-programmatically.aspx

3
追加された
それは恐ろしいです...それは基本的にビューステートを維持しないようにコントロールにバグがあることを意味します。私はCPEコントロールがうまく動作しない場合、代わりにjQueryパネルを使って同様のことをすることを考えました: - P
追加された 著者 kenyee,
FWIW、jqueryを使用して状態の変更を取得し、ajax POSTで戻された隠しフィールドを更新しました。コードはフィールド(CSVの拡張セクションのリスト)をデコードし、適切にクライアントステートを設定します。 asp.net IMHOで修正する必要があるもののための主要なハック...
追加された 著者 kenyee,

私は別の状況でこれにぶつかりました...

  1. パネルが折りたたまれていますTimer ticks、および部分的なポストバックが始まります
  2. ポストバックの進行中にユーザーがパネルを展開する
  3. 部分的なポストバックが終了し、パネルの状態は ビューステート維持されているため "collapsed"に戻りました。 部分的に始まったところに戻ったばかりです ポストバック。

どのようにこれを処理するかは、状況によって異なりますが、私の場合は非同期をキャンセルしますユーザーがパネルを展開または折りたたんだときにポストバックします。それは数秒ごとに現在の値を更新するタイマーなので、すぐにもう一度実行して「失う」ことができます。

または、パネルのadd_expandingイベントとadd_collapsingイベントを使用して、Sys.WebForms.PageRequestManager.getInstance()。get_isInAsyncPostBack()をチェックすることで、ポストバックの間、展開/折りたたみ機能を無効にすることができます。

0
追加された