繁体   English   中英

更改LinkBut​​ton Onclick事件

[英]Changing LinkButton Onclick event

我正在尝试动态创建LinkBut​​tons并从服务器端更改它们的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM