Usercontrol (ucAntrag)
public event EventHandler _eventBtn;
protected void Button_Click(object sender, EventArgs e)
{
_eventBtn(sender, e);
}
ist eingebunden in
Page
protected void Page_Load(object sender, EventArgs e)
{
ucAntrag._eventBtn += new EventHandler(Button_Click);
}
protected void Button_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
}
Ein AutoPostBack eines Controls leert mir immer den _eventBtn. Wie kann ich über PostBacks hinweg den Event ans _eventBtn binden? String-Properties im UserControl halte ich mir ja im ViewState - nur bei Events weiß ich nicht wie ich da vorgehen soll.
Hallo,
ich würde meinen wenn du in der Page statt Page_Load -> Page_Init verwendest sollte es zum gewünschten Ergebnis führen.
Hallo,
da bei jeder Anfrage neue Instanzen der Controls sowie der Page erstellt werden, müssen die Events bei jeder Anfrage neu gebunden werden.
Wenn Du das im Page_Load machst, sollte das aber eigentlich klappen...
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Mit Page_Init klappt es.
Ich habe mir zwar die Lifecycle mal angeschaut aber könnte jemand versuchen mir zu erklären warum es im Page_Init klappt, im Page_Load nicht.
Das hat was mit dem Zeitpunkt zu tun, wann der ViewState wieder hergestellt wird. Vor diesem Zeitpunkt musst du das Control wieder erstellen. ASP.Net geht hin und weißt dann dem neuerstellten Control, sofern es den gleichen Namen hat, die entsprechenden Eigenschaften und ausgelöste Events zu.
Dementsprechend funktioniert es nicht, wenn du das Control zu einem späteren Zeitpunkt erstellt.
mit freundlichen Grüßen,
Tomot
Projekte: www.gesellschaftsspieler-gesucht.de