动态创建的按钮未触发的点击事件

本文关键字:事件 创建 按钮 动态 | 更新日期: 2023-09-27 17:59:20

我正在创建动态生成的按钮,当我单击按钮时,Add_click方法不会启动。

以下是我的代码示例:

protected void SearchRec(object sender, EventArgs e)
{
    SearchResultsPanel.Controls.Clear();
    string text_to_search = SearchTB.Text;
    Friends RecToSearch = new Friends();
    List<Friends> ListNFU = DBS.getNonFriendUsers(User.Identity.Name.ToString(), text_to_search);
    if (ListNFU.Count != 0)
    {
        foreach (Friends NFRIndex in ListNFU)
        {
            string _FriendsOutput = FR_output(NFRIndex);
            HyperLink RecHyperLink = new HyperLink();
            RecHyperLink.Text = _FriendsOutput;
            RecHyperLink.CssClass = "HyperLinkFriends";
            RecHyperLink.ID = NFRIndex.UdName;
            SearchResultsPanel.Controls.Add(new LiteralControl("<div style='height:32px'>"));
            SearchResultsPanel.Controls.Add(RecHyperLink);
            Button addUser = new Button();
            addUser.CssClass = "ApproveBTN";
            addUser.Text = "send";
            addUser.Click += new EventHandler(Add_Click);
            addUser.ID = NFRIndex.UdName + "3";
            SearchResultsPanel.Controls.Add(addUser);
        }
    }
    else
    {
        Label NoResultsLabel = new Label();
        NoResultsLabel.Text = "Nothing is found";
        SearchResultsPanel.Controls.Add(NoResultsLabel);
    }
    SearchResultsPanel.Controls.Add(new LiteralControl("</div>"));
}
private void Add_Click(object sender, EventArgs e)
{
    Button btn = (Button)sender;
    string _tempID = btn.ID;
    string id = _tempID.Substring(0, _tempID.LastIndexOf('3'));
    DateTime cdate = new DateTime();
    cdate = DateTime.Now;
    DBS.AddFriend(User.Identity.Name, id, cdate);
    btn.Visible = false;
    btn.NamingContainer.FindControl(id).Visible = false;
}

注意:我在page_load上做了一些非常类似的事情,它确实有效。

动态创建的按钮未触发的点击事件

这是因为当重新加载页面时,很可能不会重新创建控件。这意味着该活动不会真正启动。

您需要将此类代码放置在Page_Load中,以便在回发时重新创建它。