Search code examples
c#asp.neteventslinkbutton

Setting LinkButton's OnClick event to method in codebehind


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)
        {

        }

Solution

  • 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;
    };