ASP.NET AJAX: CollapsiblePanelExtender-Status retten

rescue
Original uploaded to flickr by OiMax

Eines der schönen und nützlichen, neuen Elemente, die ASP.NET AJAX bietet, ist der CollapsiblePanelExtender aus dem AJAX Control Toolkit. Dieser kann – wie der Name bereits vermuten lässt – dazu benutzt werden, Panels in einer WebPage um die Fähigkeit des Auf- und Zuklappens zu erweitern.

Das funktioniert auch ganz prima – allerdings gibt es Szenarien, in denen man den Status eines CollapsiblePanelExtenders bzw. des dazugehörigen Panels auch über einen Seitenwechsel heraus retten möchte. Beispiel: Ich habe eine Masterseite, welche am oberen Seitenrand (quasi als Header) interessante Status-Informationen o.ä. beinhaltet. Diese packe ich in ein zuklappbares Panel – damit der Anwender sie bei Bedarf ausblenden kann, um mehr vom eigentlich interessanten Inhalt der Seite zu sehen. Wird nun die Content-Seite gewechselt, so geht der Aufklapp-Status des Panels verloren – trotzdem man sich eigentlich immer noch in der gleichen Master-Seite befindet. Das heißt: Hatte der Anwender das Panel vor dem Seitenwechsel zugeklappt so ist es nun wieder geöffnet.

Diesem Verhalten kann jedoch mit 4 + 1 Zeile Code in der Codebehind-Datei der Masterseite entgegen gewirkt werden, vier Zeilen im Page_Load-Eventhandler und einer Zeile für die Deklaration einer statischen Variablen:


static string _topPanelCollapsed_ClientState;
 
protected void Page_Load(object sender, EventArgs e)
{
  if (IsPostBack)
    _topPanelCollapsed_ClientState =
      CollapsiblePanelExtender1.ClientState ;
  else
    CollapsiblePanelExtender1.ClientState =
      _topPanelCollapsed_ClientState;
}

(Code-Stand: ASP.NET AJAX ControlToolkit Beta2)

Kommentare sind geschlossen.