【问题标题】:Dynamic ImageButton click event not fired未触发动态 ImageButton 单击事件
【发布时间】:2015-12-15 09:38:16
【问题描述】:

我有以下代码:

protected void Page_Load(object sender, EventArgs e)
{
    using (ImageButton _btnRemoveEmpleado = new ImageButton())
    {
        _btnRemoveEmpleado.ID = "btnOffice_1";
        _btnRemoveEmpleado.CommandArgument = Guid.NewGuid().ToString();
        _btnRemoveEmpleado.Height = 15;
        _btnRemoveEmpleado.Width = 15;
        _btnRemoveEmpleado.ImageUrl = "cross-icon.png";
        _btnRemoveEmpleado.Click += new ImageClickEventHandler(_btnRemoveEmpleado_Click);

        this.phPartesPersonal.Controls.Add(_btnRemoveEmpleado);
    }
}

void _btnRemoveEmpleado_Click(object sender, ImageClickEventArgs e)
{
    try
    {
        string s = "";
    }
    catch (Exception ex)
    {
    }
    finally { }
}

当我点击_btnRemoveEmpleado 时,会执行回发,但我从未到达string s = ""; 行。请问如何执行_btnRemoveEmpleado_Click 代码?

【问题讨论】:

  • 你在按钮上设置AutoPostBack = true了吗?
  • 当你说“我从未到达字符串 s”时,你的意思是当你调试时你正在进入 void _btnRemoveEmpLeado_Click 但只进入 catch 并最终阻塞?
  • 不要将using 块用于ImageButton。由于按钮位于using 块之后,因此无法处理事件。检查这个:stackoverflow.com/questions/21316266/…
  • DavidG,ImageButton 不包含“AutoPostBack”的定义,所以这是不可能的。
  • sr28,不,_btnRemoveEmpleado_Click 代码没有执行。

标签: c# asp.net


【解决方案1】:

删除using,控件由 ASP.NET 自动释放,它们必须一直存在到页面生命周期结束。除此之外,在Page_Init 中创建您的动态控件,它应该可以工作。

protected void Page_Init(object sender, EventArgs e)
{
     ImageButton _btnRemoveEmpleado = new ImageButton();
    _btnRemoveEmpleado.ID = "btnOffice_1";
    _btnRemoveEmpleado.CommandArgument = Guid.NewGuid().ToString();
    _btnRemoveEmpleado.Height = 15;
    _btnRemoveEmpleado.Width = 15;
    _btnRemoveEmpleado.ImageUrl = "cross-icon.png";
    _btnRemoveEmpleado.Click += new ImageClickEventHandler(_btnRemoveEmpleado_Click);

    this.phPartesPersonal.Controls.Add(_btnRemoveEmpleado);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 2011-02-05
    • 2021-04-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多