aspx页面动态load用户控件,用户控件中包含UpdatePanel,第一次加载的时候没问题,点击btnTest按钮回发后就报下面的错误。
异常信息:
捕捉到 System.InvalidOperationException
Message="A control with ID 'btnTest' could not be found for the trigger in UpdatePanel 'up1'."
Source="System.Web.Extensions"
StackTrace:
在 System.Web.UI.UpdatePanelControlTrigger.FindTargetControl(Boolean searchNamingContainers)
在 System.Web.UI.AsyncPostBackTrigger.Initialize()
在 System.Web.UI.UpdatePanelTriggerCollection.Initialize()
在 System.Web.UI.UpdatePanel.Initialize()
在 System.Web.UI.PageRequestManager.RegisterUpdatePanel(UpdatePanel updatePanel)
在 System.Web.UI.ScriptManager.System.Web.UI.IScriptManagerInternal.RegisterUpdatePanel(UpdatePanel updatePanel)
在 System.Web.UI.UpdatePanel.RegisterPanel()
在 System.Web.UI.UpdatePanel.OnInit(EventArgs e)
在 System.Web.UI.Control.InitRecursive(Control namingContainer)
在 System.Web.UI.Control.InitRecursive(Control namingContainer)
在 System.Web.UI.Control.AddedControl(Control control, Int32 index)
在 System.Web.UI.ControlCollection.Add(Control child)
在 FrmTestTriggers.Page_Load(Object sender, EventArgs e)
代码 母页面
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:Label ID="lblContain" runat="server"></asp:Label>
</form>
</body>
</html>
cs 文件
protected void Page_Load(object sender, EventArgs e)
{
WucTestTriggers wc = this.LoadControl("WucTestTriggers.ascx") as WucTestTriggers;
wc.ID = "idTest";
this.lblContain.Controls.Add(wc);
}
子用户控件
<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="False">
<ContentTemplate>
<asp:DataGrid ID="dgList" runat="server" AutoGenerateColumns="true">
</asp:DataGrid>
<asp:TextBox ID="txtTest" runat=server Text="bu"></asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnTest" EventName="Click"></asp:AsyncPostBackTrigger>
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="btnTest" runat="server" Text="触发" OnClick="btnTest_Click" />