¿Por qué el Panel de actualización hace una devolución completa para el control personalizado?

StackOverflow https://stackoverflow.com/questions/616884

Pregunta

Tengo un control personalizado bastante complejo: el control personalizado tiene un par de paneles de actualización.

Estoy tratando de usar el control como este dentro de un panel de actualización:

    <asp:UpdatePanel ID="up1" runat="server">
    <ContentTemplate>
     <asp:Button ID="btn1" runat="server" Text="Sample Button" />&nbsp;&nbsp;<asp:Label ID="lblTime" runat="server"></asp:Label>    
     <cc1:MyCustomControl ID="MyCustomControl1" runat="server" >
    </cc1:MyCustomControl>
    </ContentTemplate>
</asp:UpdatePanel>

Cuando hago clic en el botón en el panel de actualización, vuelve a aparecer una publicación asíncrona y no hay pantalla " parpadeo " Cuando hago clic en un botón de mi control personalizado, la página parpadea y devuelve una publicación completa.

Dentro del control personalizado, hay paneles de actualización que intentan realizar devoluciones de datos completas (según los desencadenantes).

¿Cómo puedo hacer que UpdatePanel a nivel de página no realice una devolución completa sin importar lo que ocurra dentro del control personalizado?

¿Fue útil?

Solución 2

Se resolvió el problema similar de la solución a este: ¿Cómo puedo obtener un UpdatePanel para interceptar un DropDownList de CompositeControl

Excepto que mi control que hizo que la devolución de datos estuviera en un panel de actualización con un activador de devolución de datos completo. Pude extraer ese control, por lo que no se anidó en los paneles de actualización y eso se resolvió.

Otros consejos

¿Has pensado en establecer explícitamente un asp: AsyncPostBackTrigger con el control btn1 en el control up1 UpdatePanel.

<asp:UpdatePanel ID="up1" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btn1" EventName="Click" />
    </Triggers>
    <ContentTemplate>     
        <asp:Button ID="btn1" runat="server" Text="Sample Button" />  
        <asp:Label ID="lblTime" runat="server"></asp:Label>         
        <cc1:MyCustomControl ID="MyCustomControl1" runat="server" />                 
    </ContentTemplate>
</asp:UpdatePanel>

Editar: ¿Cómo intentaste llamar explícitamente al método de actualización en el evento OnClick del botón para el panel de actualización? Esto incluye los paneles de actualización integrados en el control personalizado.

Primero vería si hay algún otro problema con el control personalizado que provoca la devolución de la página completa, ya que en cualquier caso, lo que debería estar sucediendo es que se actualiza todo el panel de actualización (aún con ajax).

Después de eso, solo mire la sección de Controles del Panel de Actualización de Nesting de esto: http://msdn.microsoft.com/en-us/library/bb398867 .aspx #

También asegúrese de tener el control ScriptManager con la propiedad EnablePartialRendering establecida en verdadero.

En UpdatePanel, configure la propiedad ChildrenAsTriggers = " true " . Esto le indica a UpdatePanel que intercepte todas las invocaciones de PostBack que se originan desde dentro de UpdatePanel.

Es posible que también desee explorar la propiedad UpdateMode , que determina qué tipo de eventos activan una actualización. (De forma predeterminada, un UpdatePanel se actualizará si se actualiza algún otro panel en la pantalla. Esto me lanzó por un tiempo hasta que me di cuenta de lo que estaba pasando).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top