更改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 Onclick事件

您已经为事件处理程序添加了一个额外的参数。所以它与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的值后调用您的方法,无论在调用代码中发生什么。