在我的gridItemTemplate
中,有“更新”面板和复选框,
<ItemTemplate>
<asp:UpdatePanel runat="server" ID="upChkOption">
<ContentTemplate>
<asp:CheckBox runat="server" ID="chkOption" AutoPostBack="true"
OnCheckedChanged="chkOption_CheckChanged">
</ContentTemplate>
</asp:UpdatePanel>
</ItemTemplate>
第一次运行没有错误,但是在
postback
之后,出现了此错误Cannot unregister UpdatePanel with ID 'upChkOption' since it was not registered with
the ScriptManager. This might occur if the UpdatePanel was removed from the control
tree and later added again, which is not supported. Parameter name: updatePanel
我该如何解决?
最佳答案
将UpdatePanel_Unload
添加到OnUnload
的UpdatePanel
事件中:
<asp:UpdatePanel ID="upChkOption" runat="server" OnUnload="UpdatePanel_Unload">
在代码后面添加
protected void UpdatePanel_Unload(object sender, EventArgs e)
{
MethodInfo methodInfo = typeof(ScriptManager).GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
.Where(i => i.Name.Equals("System.Web.UI.IScriptManagerInternal.RegisterUpdatePanel")).First();
methodInfo.Invoke(ScriptManager.GetCurrent(Page),
new object[] { sender as UpdatePanel });
}
Adding/removing UpdatePanels dynamicaly from a page
cannot-unregister-updatepanel-since-it-was-not-registered-with-the-scriptmanager-error