我有一个带有按钮的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。网页生命周期和动态控制…
https://web.archive.org/web/20210330142645/http://www.4guysfromrolla.com/articles/092904 - 1. - aspx