C# ASP.Net:未引发动态创建的嵌套更新面板中的“单击动态事件”按钮
我有带按钮的UpdatePanelC# 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"
<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;
}
}