C# 更改LinkButton Onclick事件
我尝试动态创建链接按钮,并从服务器端更改其onclick事件,如下所示:C# 更改LinkButton Onclick事件,c#,asp.net,event-handling,asplinkbutton,C#,Asp.net,Event Handling,Asplinkbutton,我尝试动态创建链接按钮,并从服务器端更改其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()+",";
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上得到了一个错误;
说明:“Method1”没有重载与委托“System.EventHandler”匹配
我似乎不明白为什么它不起作用
任何帮助都将不胜感激 您已经向事件处理程序添加了一个额外的参数。所以它不匹配。看看你的:
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的值(不管调用代码中发生了什么)后,只调用您的方法