6

Tengo un control de servidor personalizado que parece funcionar bien hasta que lo coloque en un UpdatePanel. Una vez dentro de UpdatePanel, sigue funcionando bien, pero UpdatePanel ahora realiza devoluciones completas cuando mi control de servidor personalizado hace una devolución de datos.Custom Server Control provoca devoluciones completas dentro de UpdatePanel

¿Debo hacer algo para que el control de servidor personalizado haga las devoluciones de datos asincrónicas dentro de un UpdatePanel?

Aquí está el código relevante que está causando una devolución de datos completa. El control ecs: Pager es mi control personalizado que causa devoluciones completas en el evento OnCommand aunque esté en UpdatePanel.

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server"> 
    <ContentTemplate> 
     <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" /> 
     <asp:Repeater ID="ClosedIssuesRepeater" runat="server"> 
     .... 
     </asp:Repeater> 
    </ContentTemplate> 
</asp:UpdatePanel> 
+0

Estaría interesado en la respuesta a esto también. Tengo un control personalizado que implementa IPostBackDataHandler que no hará una devolución de datos parcial dentro de un UpdatePanel. Tiene que haber alguna salsa secreta que haga que un control se registre como desencadenante cuando use la propiedad UseChildrenAsTriggers. –

+0

¿Qué sucede si agrega un activador explícito en el panel de actualización para hacer una devolución de datos de asynch en el evento del control personalizado? – AndreasKnudsen

Respuesta

0

Lo sentimos ... no se puede ver el resto de la página.

¿Tiene un ScriptManager en su página también?

+0

Sí, lo siento, el código fue cortado por alguna razón. Corregido ahora. ScriptManager está presente como parte de la página maestra. – DarenTx

0

¿El control personalizado implementa INamingContainer, y la devolución de datos proviene de otro control dentro de ese contenedor de nombres?

Encontré que un límite de contenedor de nombres entre UpdatePanel y el control de origen puede causar este comportamiento.

0

Una opción podría ser tan AndreasKnudsen sugiere que la adición de un AsyncPostBackTrigger a su panel de

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server"> 
    <ContentTemplate> 
    <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" /> 
    <asp:Repeater ID="ClosedIssuesRepeater" runat="server"> 
     .... 
    </asp:Repeater> 
    </ContentTemplate> 
    <Triggers> 
    <AsyncPostBackTrigger ControlID="ClosedIssuesPager" EventName="Command" /> 
    </Triggers> 
</asp:UpdatePanel> 

Otra opción es tratar de añadir ChildrenAsTriggers a su etiqueta UpdatePanel

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server" ChildrenAsTriggers="true"> 
+1

ChildrenAsTriggers es verdadero por defecto, por lo que agregar esto no sería diferente. – awe

1

Ponga el modo de actualización de la actualización panel a condicional.

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" /> 
     <asp:Repeater ID="ClosedIssuesRepeater" runat="server"> 
     .... 
     </asp:Repeater> 
    </ContentTemplate> 
</asp:UpdatePanel> 
1

No especifica qué tipo de controles se utilizan en su control personalizado. ¿Son botones o menús desplegables o algo más? Si son botones, debe asegurarse de que sus propiedades UseSubmitBehavior estén establecidas en False.

También, usted va a querer dar de alta sus controles con el de la página ScriptManager a través ScriptManager.RegisterAsyncPostBackControl

1

tuve un problema similar y se encontró que la adición de la ClientIDMode atributo = "AutoID" a mi etiqueta de control de usuario resuelve el problema .

Cuestiones relacionadas