2008-10-27 16 views
12

Tengo un UserControl que contiene un UpdatePanel. Cuando me puse en una página, que arroja el siguiente error:¿Qué causa el error 'No se puede cancelar el UpdatePanel'?

Cannot unregister UpdatePanel with ID 'ReviewContentUpdatePanel' 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

ReviewContentUpdatePanel es el nombre del panel de actualización & no está siendo retirado o añadido en el código, que existe en la página aspx y no se quita . ¿Alguien ha encontrado esto antes?

+0

¿Tiene un ScriptManager en la página que contiene el UserControl? – tvanfosson

+0

sí, y un scriptproxy en el control de usuario –

+1

¿Se puede publicar el código? La mayoría de las referencias a este error se refieren a la adición de paneles de actualización/controles de forma dinámica. ¿Se está agregando dinámicamente el control del usuario? – tvanfosson

Respuesta

4

¿Está moviendo controles en el código? Si es así, eche un vistazo a here y vea si esto resuelve su problema.

+0

No me estoy moviendo * nada * en el código, nada está interactuando con el panel de actualización o su contacto usercontrol en el código –

+0

¿Puede publicar algún código de muestra (si no es sensible, es) – DilbertDave

+0

Ignora eso: acabo de ver los comentarios en la otra publicación. ¡Nuevo en SO! – DilbertDave

1

En su marcado, asegúrese de haber especificado una ID para UpdatePanels y para cada control runat = "server" en sus jerarquías principales.

5

Este error se produce cuando la colección Controls en la que reside el UpdatePanel se borra con el Clear method, o cuando el UpdatePanel específico se elimina con el Remove method.

Un desencadenante para estos métodos podría ser la implementación del CreateChildControls method para el control contiene el UpdatePanel. Por lo general, usted llama a Controls.Clear() en la parte superior de este método, para comenzar con una borrón y cuenta nueva si este método se llama repetidamente.

3

Tuve esto una vez antes. Para solucionarlo, simplemente lo eliminé y luego volví a crearlo y el problema desapareció.

0

¿Ha intentado incluir un ScriptManagerProxy en el control de usuario?

0

Intenta eliminar el scriptproxy de UserControl. En este caso, solo tiene un ScriptManager en su página.

0

Esta es una posibilidad remota, pero he tenido experiencias con las extensiones AJAX, específicamente con el panel de actualización, en el que los errores arrojados por los controles secundarios se manifestaban como un error diferente arrojado por el panel de actualización. También vi una referencia a este error específico que se han generado debido a un error en un control secundario:

http://msmvps.com/blogs/shareblog/archive/2009/03/11/cannot-unregister-updatepanel-with-id-since-it-was-not-registered-with-the-scriptmanager-and-moss.aspx

No estoy seguro si este es el caso para usted o no, pero me he pasado muchas horas persiguiendo los errores equivocados debido a esto.

2

Espero que esto ayude a alguien más, ya que me volvía loco. Después de encontrar varias cositas de información aquí y allá aquí y en otros lugares, finalmente se me ocurrió la siguiente solución. Tenga en cuenta que no estoy creando dinámicamente este panel de actualización aquí ni en ningún otro lado, y la mayor parte de la información estaba relacionada con la creación dinámica de este control, cosa que yo no era.

Estaba usando un panel de actualización dentro de un control de usuario web utilizado en una página heredada por una página maestra con el administrador de scripts. No sé si esta combinación era lo que estaba causando, pero así es como me fijo (dentro del control de usuario web en la que se utiliza el panel de actualización):

protected override void OnInit(EventArgs e) 
{ 
    ScriptManager sm = ScriptManager.GetCurrent(this.Page); 
    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(sm, new object[] { updatePanel }); 
    base.OnInit(e); 
} 
+0

Necesitaba eliminar y volver a agregar un control de usuario que contenga un panel de actualización en algunos casos. Volví a configurar mi código para llamar a algo así como este método solo después de volver a agregar el control del usuario, y funcionó. ¡Un millón de gracias! – user12861

Cuestiones relacionadas