Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net:未引发动态创建的嵌套更新面板中的“单击动态事件”按钮_C#_Asp.net_Event Handling_Updatepanel - Fatal编程技术网

C# ASP.Net:未引发动态创建的嵌套更新面板中的“单击动态事件”按钮

C# ASP.Net:未引发动态创建的嵌套更新面板中的“单击动态事件”按钮,c#,asp.net,event-handling,updatepanel,C#,Asp.net,Event Handling,Updatepanel,我有带按钮的UpdatePanel <asp:UpdatePanel runat="server" ID="upOuter" UpdateMode="Conditional"> <ContentTemplate> <asp:Button ID="btnNestInnerPanel" runat="server" OnClick="btnNestInnerPanelClick" Text="Nest Update Panel"

我有带按钮的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>
当我单击第一个按钮时,它会导致面板更新,并显示内部面板。没错。但若我单击内部面板中新创建的按钮,则不会引发btnInnerClick处理程序。有人知道出了什么问题吗


如果我在简单占位符中动态嵌套内部updatepanel(而不是在外部updatepanel中),则正确引发btnInnerClick处理程序。我不知道…

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


必须在页面加载时重新创建所有ASP.Net动态控件,以便正确调用它们的事件。Google:ASP.Net页面生命周期和动态控件…哦,谢谢。你是对的。我在页面加载中替换了内部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; 
    }
}