Установка события OnClick LinkButton для метода в codebehind - PullRequest
14 голосов
/ 28 октября 2010

Я создаю LinkButton из своего кода, и мне нужно присвоить метод onclick и передать с ним также параметр. У меня есть это до сих пор:

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

Метод, который я хочу передать, выглядит следующим образом:

 protected void delline(string id)
        {

        }

Ответы [ 2 ]

31 голосов
/ 28 октября 2010

Ну, вы не можете передать его этому методу, вам нужно назначить делегат события click методу, способному его обработать.

Как это:

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

Назначьте событие нажатия как любое событие:

lnkdel.Click += new EventHandler(DynamicClick);

Если вы хотите передать аргумент, используйте CommandArgument , и вам понадобится другой делегат:

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

А потом:

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

Кстати, если вы находитесь на> = C # 3, вы также можете использовать крутость анонимных методов:

lnkDel.Command += (s, e) => { 
   Label1.Text = "You chose: " + e.CommandName + " Item " + e.CommandArgument;
};
1 голос
/ 28 октября 2010

Прототип функции для этого события:

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

Назначьте его с помощью:

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