Clickeventhandler von dynamisch erzeugten Buttons in CustomControl

07/03/2009 - 16:43 von Jan | Report spam
Hallo NG,

ich möchte ein CustomControl erstellen, das zur Lauzeit einen ImageButton
erzeugt und beim Anklicken eine Methode aufruft, die in der übergeordneten
Page steht.

Dank den Tips von Thomas und Stefan ist das Projekt als Websiteprojekt
angelegt und ich kann aus meinem CustomControl heraus die Methoden der Page
auch ansprechen.

Bleibt das Problem, das der ClickEventhandler im CustomControl nicht
ausgeführt wird. Ich gehe wie folgt vor:

ImageButton meinButton = new ImageButton();
meinButton.ImageUrl = "button.gif";
meinButton.Click += new ImageClickEventHandler(meinButton_Click);
control.Controls.Add(meinButton);

Die ereignisbehandelnde Methode:

void butForward_Click(Object obj, ImageClickEventArgs e)
{
HttpContext.Current.Response.Write("Geklickt!");
currentPage.GetType().GetMethod("MeineMethode").Invoke(currentPage,
null);
}

Doch die Methode wird scheinbar nie ausgeführt, denn auch die Textausgabe
aus der ersten Zeile erscheint nicht.

Ist denn die Auswertung eines Ereignisses in einem UserControl nicht möglich?

Viele Grüße

Jan
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
07/03/2009 - 16:52 | Warnen spam
Hallo Jan,
"Jan" schrieb:

ich möchte ein CustomControl erstellen, das zur Lauzeit einen ImageButton
erzeugt und beim Anklicken eine Methode aufruft, die in der à¼bergeordneten
Page steht.



ich würde empfehlen, den Button entweder hart mit reinzunehmen oder ihn
zumindest in Page_Init zu erzeugen. Wenn Du ihn nicht brauchst, blende
ihn über <Button>.Visible = False einfach aus.

Bleibt das Problem, das der ClickEventhandler im CustomControl nicht
ausgefà¼hrt wird. Ich gehe wie folgt vor:

ImageButton meinButton = new ImageButton();
meinButton.ImageUrl = "button.gif";
meinButton.Click += new ImageClickEventHandler(meinButton_Click);
control.Controls.Add(meinButton);



Und wann wird dieser Code ausgeführt? Wenn nicht in Page_Init, spàt. in
Page_Load (was meist auch schon zu spàt ist), dann kann der Event nie
ausgelöst werden.

Zusàtzlich muss der Button _immer_, also auch bei einem Postback neu
erzeugt werden.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen