
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)