更改LinkButton Onclick事件
本文关键字:事件 Onclick LinkButton 更改 | 更新日期: 2023-09-27 17:49:28
我正在尝试动态创建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。点击+= new eventandler (Method1);说:"没有重载为'Method1'匹配委托'系统。EventHandler’"我似乎找不出它为什么不工作。
任何帮助将非常感激!!
您已经为事件处理程序添加了一个额外的参数。所以它与LinkButton
上的Click
事件处理程序不匹配。看看你的:
public void Method1(object sender, EventArgs e, int pagenum)
看看它期望什么:
public void Method1(object sender, EventArgs e)
因此出现了错误。我不确定在这种情况下如何通过pagenum
,因为它没有在处理程序分配中提到:
pb.Click += new EventHandler(Method1);
可能有一些其他的技巧来传递一个参数到一个处理程序,但一个对我来说总是有效的,似乎相当直接的是简单地把它包装在一个lambda函数中:
pb.Click += (sender, e) => Method1(sender, e, pagenum);
这将创建一个匿名方法,该方法只在捕获pagenum
的值后调用您的方法,无论在调用代码中发生什么。