[英]Changing LinkButton Onclick event
我正在尝试动态创建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'”。我似乎找不到为什么它不起作用的原因...
任何帮助将不胜感激!!!
您已经向事件处理程序添加了一个额外的参数。 因此它与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
的值后pagenum
调用您的方法,无论调用代码中发生了什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.