问题
I'm constructing a LinkButton from my codebehind, and I need to assign the onclick to a method, and pass a parameter with it too. I have this so far:
LinkButton lnkdel = new LinkButton();
lnkdel.Text = "Delete";
The method I want to pass it to looks like this:
protected void delline(string id)
{
}
回答1:
Well you can't pass it to that method, you need to assign the click event delegate to a method capable of handling it.
Like this:
public void DynamicClick(object sender, EventArgs e) {
// do something
}
Assign the click event like any event:
lnkdel.Click += new EventHandler(DynamicClick);
If you want to pass an argument, use CommandArgument, and you'll need a different delegate:
void DynamicCommand(Object sender, CommandEventArgs e)
{
Label1.Text = "You chose: " + e.CommandName + " Item " + e.CommandArgument;
}
And then:
lnkDel.Command += new CommandEventHandler(DynamicCommand)
lnkDel.CommandArgument = 1234;
BTW if you're on >= C#3, you can also use the coolness of anonymous methods:
lnkDel.Command += (s, e) => {
Label1.Text = "You chose: " + e.CommandName + " Item " + e.CommandArgument;
};
回答2:
The function prototype for this event is:
protected void lnkdel_OnClick(object _sender, EventArgs _args)
{
LinkButton src = (LinkButton)_sender;
// do something here...
}
Assign it with:
LinkButton lnkdel = new LinkButton();
lnkdel.Text = "Delete";
lnkdel.OnClick += new EventHandler(lnkdel_OnClick);
来源:https://stackoverflow.com/questions/4041137/setting-linkbuttons-onclick-event-to-method-in-codebehind