ASP.未引发动态创建的嵌套更新面板中动态按钮的单击事件

本文关键字:动态 按钮 事件 单击 嵌套 创建 ASP 更新 | 更新日期: 2023-09-27 18:02:05

我有一个带有按钮的UpdatePanel。

<asp:UpdatePanel runat="server" ID="upOuter" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Button ID="btnNestInnerPanel" runat="server" 
        OnClick="btnNestInnerPanelClick" Text="Nest Update Panel" />
    </ContentTemplate>
</asp:UpdatePanel>

我想嵌套内部更新面板与其他按钮在外部更新面板单击该按钮。我想通过点击new按钮来更新内部updatepanel。页面有这样的后台代码:

public partial class _Default : Page
{
    private Button btnInner;
    protected void Page_Load(object sender, EventArgs e)
    {
        btnInner = new Button { Text = "Click Me", ID = "MyId" };
        btnInner.Click += btnInnerClick;
    }
    protected void btnNestInnerPanelClick(object sender, EventArgs e)
    {
        UpdatePanel upInner = new UpdatePanel();
        upInner.UpdateMode = UpdatePanelUpdateMode.Conditional;
        upInner.ContentTemplateContainer.Controls.Add(btnInner);
        upOuter.ChildrenAsTriggers = false;
        upOuter.ContentTemplateContainer.Controls.Add(upInner);
    }
    private void btnInnerClick(object sender, EventArgs e)
    {
        Button btn = (Button)sender; 
    }
}

当我点击第一个按钮时,它会导致面板更新和内部面板出现。这是正确的。但是如果我在内部面板中单击新创建的按钮,btnInnerClick处理程序不会引发。有人知道是什么问题吗?

如果我在简单的占位符中动态嵌套内部更新面板(而不是在外部更新面板中),btnInnerClick处理程序将正确引发。

ASP.未引发动态创建的嵌套更新面板中动态按钮的单击事件

所有ASP。必须在页面加载时重新创建网络动态控件,以便正确调用它们的事件。谷歌:ASP。网页生命周期和动态控制…

https://web.archive.org/web/20210330142645/http://www.4guysfromrolla.com/articles/092904 - 1. - aspx