Reduzierbare Palette in ASP.net
-
22-08-2019 - |
Frage
Okay, ich glaube, ich bin nur einen dummen Fehler hier machen, aber ich mag ein Steuerelement erstellen (abgeleitet von System.Web.UI.Control), die zusammenklappbar ist, mit dem guten alten ASP.net Viewstate / Postback Modell.
Ich habe ein Image in meiner Klasse, die ich in der OnInit () Ereignisse initialisieren:
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;
}
Meine Create wird dann überprüft 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 dem Image, die Seite tut es Postbacks, aber dann ist es nicht ändern, es ist Zustand -. Wenn es vor erweitert wurde, ist es nach wie vor nach erweitert
Im Konstruktor Ich habe EnableViewState = true;
Jede Ahnung, was ich um mich fehlt diese Änderungen bestehen bleiben?
Lösung
Sind Sie tatsächlich den Zustand Ihrer Platte speichern (die kollabierte boolean) in den Ansichtszustand?
ViewState("collapsed") = Collapsed
Der Ansichtszustand automatisch speichern keine Eigenschaft / Variable, die Sie haben, haben Sie es zu sagen, was zu tun ist.
Andere Tipps
Wenn Sie Viewstate nicht funktioniert, können Sie immer versuchen, es als eine Sitzung zu speichern.