Asp.net创建LinkBut​​ton并在单击另一个LinkBut​​ton时附加onclick事件

时间:2012-10-24 07:53:08

标签: asp.net linkbutton

所以..我正在我的页面上动态创建LinkBut​​tons:

LinkButton lb = new LinkButton();
lb.Click += new EventHandler(lb_Click);

当单击其中一个LinkBut​​ton时,我需要知道哪个链接被点击,然后创建另一个LinkBut​​ton并在其上附加onclick事件。 (我怎样才能做到这一点?如果我已经正确理解,点击事件不能附加在(这种情况下)lb_Click函数中,那么我还有什么方法可以做到这一点吗?

编辑:

为了使这个问题更容易理解,这是我试图制作它的方法,但它不起作用:

LinkButton lb = new LinkButton();
lb.click += new EventHandler(lb_Click);

void lb_Click(object sender, EventArgs e)
{
    LinkButton lb2 = new LinkButton();
    lb2.click += new EventHandler(lb2_Click);
}

void lb2_Click(object sender, EventArgs e)
{
    //do something
}

单击lb2不会触发lb2_Click事件。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用此代码 - 基于sender argument

LinkButton lb = new LinkButton();
lb.Id= "Test1";
lb.Click += new EventHandler(lb_Click);

LinkButton lb2 = new LinkButton();
lb2.Id= "Test2";
lb2.Click += new EventHandler(lb_Click);

void LinkButton_Click(Object sender, EventArgs e) 
{
   var yourControl = (LinkButton)sender;
   var id = yourControl.Id;
   if(id == "Test1")
   {
      ...
   }
   else if(id == "Test2")
   {
      ...
   }

}

答案 1 :(得分:0)

是的,是的,是的:我非常,非常迟到了。
以供将来参考此帖子的任何人参考:

您的方法被标记为private(省略访问修饰符默认为private),这意味着它们无法被访问,因此无法调用它们。

相反,请使用protected修饰符确保它们被正确调用。

像这样:

LinkButton lb = new LinkButton();
lb.click += new EventHandler(lb_Click);

protected void lb_Click(object sender, EventArgs e)
{
    LinkButton lb2 = new LinkButton();
    lb2.click += new EventHandler(lb2_Click);
}

protected void lb2_Click(object sender, EventArgs e)
{
    //do something
}

希望这有助于未来的访问者:)