webForumDet fria alternativet

Sätta ett click-event från koden?

.NET

7 svar · 459 visningar · startad av inspiro

Medlem sedan sep. 2005673 inlägg
Frågan#1

Hur gör man för att ge en knapp som man skapar i koden ett click-event?

LinkButton lb = new LinkButton();
lb.Click += new System.EventHandler(this.btnHello_Click);

???
Medlem sedan juni 20019 024 inlägg
#2
lb.Click += new EventHandler(this.btnHello_Click);

void btnHello_Click(Object sender, EventArgs e)
{
   Button b = (Button)sender;
   b.Text = "Klickad";
}
Medlem sedan dec. 19996 721 inlägg
#3

Kom ihåg att knappen måste ha ett id och dessutom återskapas vid postback för att eventet ska triggas på ett tillförlitligt sätt.

Medlem sedan sep. 2005673 inlägg
#4

Jag får det inte att fungera. Min LinkButton försöker jag skapa i min DayRender för min kalender-kontroll, kan det vara det som ställer till det? Den skriver ut texten på knappen men det går inte att klicka på den, blir inte ens en länk (lägger till en hyperlink på samma sätt och det fungerar).

LinkButton lb = new LinkButton();
lb.Text = "Click";
lb.ID = "TestLB";
lb.Click += new EventHandler(lb_Click);
Panel.Controls.Add(lb);
Medlem sedan mars 20023 561 inlägg
#5

Chansning: Kan vara att du behöver sätta lb.Command istället för lb.Click och new CommandEventHandler(lb_Click) istället för new EventHandler(lb_Click). Dessutom behöver du nog byta ut EventArgs som in parameter i lb_Click-metoden till CommandEventArgs.

Medlem sedan sep. 2005673 inlägg
#6

Näe, fungerar tyvärr inte ändå. Och tittar jag i koden som genereras får jag en tom länk:


//koden som ska göra knappen

LinkButton lb = new LinkButton();
lb.Text = "Click me";
lb.ID = "TestLB";
lb.Command += new CommandEventHandler(this.lb_Click); 
Panel.Controls.Add(lb);

...och koden som den spottar ut:

<a id="TestLB">Click me</a>
Medlem sedan juni 20019 024 inlägg
#7

Glöm det, irrelevant.

Medlem sedan sep. 2005673 inlägg
#8

Verkar som man inte kan göra det här... så dumt!!

Because the DayRender event is raised while the Calendar control is being
rendered, you cannot add a control that can also raise an event, such as
LinkButton. You can only add static controls, such as
System.Web.UI.LiteralControl, Label, Image, and HyperLink.

Finns ingen work-around tror ni? Kan såklart ha en hyperlink också men jag tänkte ju köra AJAX... :(

270 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)