【问题标题】:Asp.net create LinkButton and attach onclick event when another LinkButton is clickedAsp.net 创建 LinkBut​​ton 并在单击另一个 LinkBut​​ton 时附加 onclick 事件
【发布时间】:2016-06-21 04:50:48
【问题描述】:

所以.. 我正在像这样在我的页面上动态创建链接按钮:

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

当点击其中一个链接按钮时,我需要知道点击了哪个链接,然后创建另一个链接按钮并在其上附加一个 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 事件。

【问题讨论】:

  • 为每个链接按钮设置唯一的 id 并在链接按钮事件处理程序中检查。
  • 你没看我写的吗?如果我在 lb_Click 中创建新的 LinkBut​​ton 并尝试在其上添加新的事件处理程序,单击 LinkBut​​ton 将不会启动该事件。还是我做错了?
  • 您是如何将链接按钮添加到页面的?
  • 例如:tc4.Controls.Add(lb); (tc4是页面上的表格单元格元素)

标签: asp.net linkbutton


【解决方案1】:

您可以尝试使用此代码 - 基于 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")
   {
      ...
   }

}

【讨论】:

  • 问题是我需要在 LinkBut​​ton_Click 中创建 lb2 并具有完全不同的 onclick 事件。这有意义吗?
  • 是的,你可以执行这种治疗,他可以有感觉,这不是问题,这取决于你的用例
【解决方案2】:

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

您的方法被标记为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
}

希望这对未来的访问者有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多