Cannot unregister updatepanel since it was not registered with the scriptmanager error

Cannot unregister updatepanel since it was not registered with the scriptmanager error

This error is a pesky one. You will most likely encounter it when you’re trying to dynamically load an UpdatePanel within an itemTemplate in a datagrid, or some similar control with dynamically created items. In my case: in a datagrid, and specifically within an item template in that grid. Here is the solution that has worked for me:

1) Hook into the Unload event of the updatepanel like so (in ASPX or ASCX file):

<asp:UpdatePanel runat="server" ID="updatePanel" OnUnload="updatePanel_Unload">
    <ContentTemplate>
    </ContentTemplate>
</asp:UpdatePanel>

2) Now in your code behind, use this implementation of Unload.
(*You will need a reference to System.Linq and System.Reflection if you don’t already have one)

protected void updatePanel_Unload(object sender, EventArgs e)
{
    /* Cast sender as an updatePanel, and use reflection to invoke
     * * the page's scriptmanger registerUpdatePanel() method
     * * */
    UpdatePanel aUpdatePanel = sender as UpdatePanel;

    MethodInfo m =(
        from methods in typeof(ScriptManager).GetMethods(
            BindingFlags.NonPublic | BindingFlags.Instance
            )
        where methods.Name.Equals("System.Web.UI.IScriptManagerInternal.RegisterUpdatePanel")
        select methods).First<MethodInfo>();

    m.Invoke(ScriptManager.GetCurrent(aUpdatePanel.Page), new object[] { aUpdatePanel });
}

Executing the reflection code to invoke the scriptManager’s registerUpdatePanel() method should fix your problem and you’re off and running again!

By | 2010-12-18T22:52:15+00:00 December 18th, 2010|Categories: ASP.NET|Tags: |4 Comments

About the Author:

4 Comments

  1. Scott September 12, 2011 at 2:46 pm - Reply

    This saved my behind. I’m not sure when it was posted but thanks a million! I could not figure out this damn error…

  2. Robert September 14, 2011 at 8:12 am - Reply

    I like your solution. I’ve always wondered though, there is probably a good reason why MS doesn’t want us to move an UpdatePanel to another parent. How can we be sure that hacks like these don’t break stuff in the background?

  3. Edwin June 20, 2012 at 6:01 am - Reply

    You are my hero of the day!

  4. Mohammad February 19, 2014 at 3:37 am - Reply

    Hi,
    Thank you for, but I think that your solution get new problem with Ajax Extenders.:

    Error: Sys.WebForms.PageRequestManagerServerErrorException: Extender controls may not be registered after PreRender.

Leave A Comment