Изменение события LinkButton Onclick
Я пытаюсь создать LinkButtons динамически и изменить их событие onclick со стороны сервера следующим образом:
for (int i = 1; i <= pagenum; i++)
{
LinkButton pb = new LinkButton();
pb.Text=i.ToString();
pb.CommandArgument=i.ToString();
pb.ID = "PageLink" + i.ToString()+",";
pb.Click += new EventHandler(Method1);
pb.Visible = true;
PagesDiv.Controls.Add(pb);
}
public void Method1(object sender, EventArgs e, int pagenum)
{
PagesDiv.Visible = true;
TableDiv.Visible = true;
localhost.StorageService w = new localhost.StorageService();
DataTable dt = w.GetItemsByCategory(pagenum, categoryname.ToString());
.................................(alot of code here...)
}
Но моя проблема в том, что я получаю сообщение об ошибке "pb.Click += new EventHandler(Method1);" говоря: "Нет перегрузки для 'Method1' соответствует делегату 'System.EventHandler'" Я не могу понять, почему он не работает...
Любая помощь будет принята с благодарностью!!!
1 ответ
Вы добавили дополнительный параметр в ваш обработчик событий. Так что это не соответствует Click
обработчик событий включенLinkButton
, Посмотри на свои:
public void Method1(object sender, EventArgs e, int pagenum)
И посмотрите, что он ожидает:
public void Method1(object sender, EventArgs e)
Отсюда и ошибка. Я не уверен, как вы ожидаете pagenum
в любом случае, в этом случае, так как это не упомянуто в назначении обработчика:
pb.Click += new EventHandler(Method1);
Могут быть некоторые другие приемы, чтобы передать аргумент обработчику, но тот, который всегда работал для меня и кажется довольно простым, состоит в том, чтобы просто обернуть его в лямбда-функцию:
pb.Click += (sender, e) => Method1(sender, e, pagenum);
Это создает анонимный метод, который просто вызывает ваш метод после захвата значения pagenum
что бы ни случилось в коде вызова.