【问题标题】:EventHandler not firing when placed into usercontrol放入用户控件时,EventHandler 不会触发
【发布时间】:2021-06-02 01:43:35
【问题描述】:

我的代码使用事件处理程序呈现删除按钮。将代码放在表单的 .aspx.cs 中,然后触发事件处理程序,一切正常。当我将代码移动到用户控件时,我单击删除按钮并弹出确认消息,不执行任何其他操作。它不运行,你不能在调试器等中运行它。

doDelete278T 函数在用户控件中。

当代码在用户控件中时,为什么 C# 不运行 doDelete278T 函数?

代码示例:

try
{
    SqlDataReader r = cmd.ExecuteReader();
    int j = 0;
    short tabby = 32;
    if (r.HasRows)
        pnl_278t.Visible = true;

    while (r.Read())
    {
        LinkButton lbt = new LinkButton();
        lbt.ID = "delete_" + r[_folderName + "_FT278T_UID"].ToString();
        lbt.CausesValidation = false;
        lbt.Text = "X";
        lbt.Click += new EventHandler(doDelete278T);
        lbt.OnClientClick = "return confirm('Are you sure you want to delete this 278T Record?')";
        lbt.TabIndex = tabby++;

        pnl_add278t.Controls.Add(lbt);
        pnl_add278t.Controls.Add(new LiteralControl(" "));
        j++;
    }//end while
    //tbx_278T_count.Text = j.ToString();
}

【问题讨论】:

  • 我已经多次看到这种问题,但从来没有处理过它(提前sry),但我想知道,使用用户控件、新按钮和页面,如果添加this 在这里有什么不同? lbt.Click += new EventHandler(this.doDelete278T);.
  • 刚遇到这个,似乎记得这个答案出现了很多次。不肯定它在这里相关但值得一试。 Link。在底部附近回答。

标签: c# asp.net user-controls


【解决方案1】:

我的实际问题是,当单击按钮时需要运行控件加载逻辑,就像在按钮处理程序就在 aspx.cs 中的页面中一样。

旧 ascx.cs Page_Load protected void Page_Load(object sender, EventArgs e) {

    if (!IsPostBack)
    {
        do278TLoad();
    }
}

新的 ascx.cs 页面加载

protected void Page_Load(object sender, EventArgs e)
    {
        _tbx_uid        = (TextBox)this.Parent.Parent.FindControl("pnl_vars").FindControl("tbx_uid");
        if (!IsPostBack)
        {
            if (_tbx_uid.Text != "0")
            {
                do278TLoad();
            }
        }
        else
        {
            do278TLoad();
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    相关资源
    最近更新 更多