Hallo, folgender Code:
//aspx.cs
usercontrol.myObject = myObject;
//...
//ascx.cs
myObject.someProperty = "12345";
//jetzt muss myObject.someProperty in der ASPX den Wert "12345" haben
Das Property sieht im UserControl so aus:
public Type myObject
{
get
{
if (ViewState["myObject"] != null)
return (Type) ViewState["myObject"];
return bla; // default value
}
set
{
ViewState["myObject"] = value;
}
}
Jetzt werden Properties dieses Objektes im ASCX verändert und müssen sich auch auf myObject in der ASPX durchschlagen. Wie stelle ich das an und ist das überhaupt ne gute Idee?
Danke 😃
Du koenntest im Usercontrol einen eigenen Event definieren, diesen feuern und in der ASPX-Seite einen Eventhandler auf diesen Event reagieren lassen. Du koenntest die Properties z.B. in einem eigenen EventArgument mitgeben.
be the hammer, not the nail!
Also sagen wir mal, die Veränderung passiert, wenn ich im USerControl eine DropDown verändere. Wie genau mache ich es dann?
Grüße
Nein doch nicht, in meiner OnInit Methode in der aspx.cs, ist mein UserControl noch null. Ich habs jetzt so:
//ganz oben in codebehind
protected MyControl Control;
Dann habe ich weiter unten in der OnInit, diesen Code:
//Control ist hier null ??
Control.EventMethode += new EventHandler(MethodeInASPX);
Was fehlt denn noch?
Habe es gelöst!
public event EventHandler Refresh;
//...
protected virtual void OnRefresh(EventArgs e)
{
EventHandler refreshEvent = Refresh;
if (refreshEvent != null)
Refresh(this, e);
}
Immer wenn ich das event starten feuern will, rufe ich einfach OnRefresh auf. Dann wird die passende Methode in der apsx gerufen.
Danke