2010-10-28 16 views
13

Ich konstruiere ein LinkButton von meinem Codebehind, und ich muss den OnClick einer Methode zuweisen und einen Parameter damit übergeben. Ich habe dies so weit:Setzen von LinkButtons OnClick-Ereignis auf Methode in Codebehind

LinkButton lnkdel = new LinkButton(); 
lnkdel.Text = "Delete"; 

Die Methode, die ich es wie folgt aussieht übergeben wollen:

protected void delline(string id) 
     { 

     } 

Antwort

31

Nun, Sie können es nicht daran übergeben Methode müssen Sie den Click-Event-Delegaten einer Methode zuweisen, die ihn verarbeiten kann.

So:

public void DynamicClick(object sender, EventArgs e) { 
    // do something 
} 

das Click-Ereignis wie jedes Ereignis zuordnen:

lnkdel.Click += new EventHandler(DynamicClick); 

Wenn Sie ein Argument übergeben möchten, verwenden Sie Command, und Sie werden einen anderen Delegierten brauchen :

void DynamicCommand(Object sender, CommandEventArgs e) 
     { 
     Label1.Text = "You chose: " + e.CommandName + " Item " + e.CommandArgument; 
     } 

Und dann:

lnkDel.Command += new CommandEventHandler(DynamicCommand) 
lnkDel.CommandArgument = 1234; 

BTW, wenn Sie auf> = sind C# 3, können Sie auch die Kühle anonyme Methoden verwenden:

lnkDel.Command += (s, e) => { 
    Label1.Text = "You chose: " + e.CommandName + " Item " + e.CommandArgument; 
}; 
+0

Dank Kumpel, ich versuche, die zweite Methode verwenden Sie Als Verwendungszweck wird der Beitrag gepostet, um eine ID zum Löschen zu übergeben. .OnCommand erschien nicht in der Intellisense-Liste, und wenn ich versuche, es trotzdem einzugeben, sagt es mir, dass der LinkButton aufgrund seines Schutzlevels nicht erreichbar ist? – Chris

+1

@Chris - Ja, vergaß diesen 'Bug/Feature' mit linkbutton. Probieren Sie dies aus: 'lnkDel.Command + = new CommandEventHandler (DynamicCommand)' oder nur 'lnkDel.Command + = DynamicCommand'. – RPM1984

+0

Danke Kumpel, es kompiliert, aber es scheint nie in das Kommando zu gehen - vermisse ich etwas? Ich habe auch die C# 3-Methode ausprobiert, die kompiliert, aber nie wieder in diese Methode geht. – Chris

1

Der Funktionsprototyp für diese Veranstaltung ist:

protected void lnkdel_OnClick(object _sender, EventArgs _args) 
{ 
    LinkButton src = (LinkButton)_sender; 
    // do something here... 
} 

Weisen Sie es mit :

LinkButton lnkdel = new LinkButton(); 
lnkdel.Text = "Delete"; 
lnkdel.OnClick += new EventHandler(lnkdel_OnClick); 
Verwandte Themen