在我的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添加到OnUnloadUpdatePanel事件中:

<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

08-06 10:10