Okay, ich denke, ich mache hier nur einen dummen Fehler, aber ich möchte ein Control erstellen (abgeleitet von System.Web.UI.Control), das zusammenklappbar ist, mit dem guten ol ' ASP.Net ViewState/PostBack-Modell.Zusammenklappbare Panel in ASP.net
Ich habe ein Image in meiner Klasse, die ich in der OnInit initialisieren() Ereignis:
private ImageButton _collapseImage;
protected override void OnInit(EventArgs e)
{
if (_collapseImage == null)
{
_collapseImage = new ImageButton();
_collapseImage.Click += CollapseImageClick;
}
_collapseImage.ImageUrl = string.Format("/images/{0}", IsCollapsed ? "plus.gif" : "minus.gif");
_collapseImage.Width = 16;
_collapseImage.Height = 16;
}
isCollapsed ist ein boolean, und die CollapseImageClick nur schaltet es:
private void CollapseImageClick(object sender, ImageClickEventArgs e)
{
IsCollapsed = !IsCollapsed;
}
Mein Create überprüft dann diesen Parameter:
protected override void CreateChildControls()
{
Panel pnl = new Panel();
pnl.Controls.Add(_collapseImage);
if(!IsCollapsed)
{
// Add some more Controls
}
Controls.Add(pnl);
}
Leider funktioniert es nicht. Ich klicke auf den ImageButton, die Seite tut es Postback, aber dann ändert es seinen Status nicht - wenn es zuvor erweitert wurde, wird es nachher erweitert.
Im Konstruktor setze ich EnableViewState = true;
Irgendwelche Hinweise, die ich vermisse, um diese Änderungen zu bestehen?
Warum nicht einfach den 'CollapsiblePanelExtender' im AjaxControlToolkit verwenden –
Ich muss die Einstellung später beibehalten, und ich möchte nicht ASP.net AJAX verwenden, weil es ziemlich kompliziert ist, in einer Sharepoint-Umgebung einzurichten. Außerdem scheint der Gewinn für die Anstrengung zu niedrig zu sein, wenn ich das öfter brauche, würde ich stattdessen jQuery mit einbeziehen. –