2011-07-28 18 views
11

tengo un panel de actualización en mi página web asp.net. Quiero activar el panel de actualización dentro de una función de JavaScript insead de activación con un botón.
Para hacer eso, utilicé la función __doPostBack('myUpdatePanel', '');. Pero creo que causa la devolución de la página completa. Mi función document.ready también se ejecuta cuando llamo a esta función. Puede que me falten algunos puntos.
¿Hay alguna otra forma de desencadenar el panel de actualización dentro de una función de JavaScript?cómo activar el panel de actualización dentro de una función de Javascript

Respuesta

18

Creo que si pones un botón oculto dentro del panel de actualización y puedes usar el javascript para disparar el clic de este botón, hará lo que quieras.

<script type="text/javascript"> 
     function Update_UpdatePaanel() { 
      document.getElementById('<%= YourButton.ClientID %>').click() 
     } 
    </script> 

El botón debe estar dentro de un div oculto y no establezca visibile = "falso" porque si se establece en false, el control no se haga y el Javascript producirá errores.

<div style="display:none"> 
     <asp:Button ID="YourButton" runat="server" /> 
    </div> 
+0

¿es realmente posible? Así que debería buscar cómo disparar clic de un botón asp. ¿sabes cómo disparar el evento click de un botón oculto con javascript? – Fer

+0

document.getElementById ('<% # YourButton.ClientID%>'). Click() –

+0

Actualicé mi respuesta con un código de muestra. –

3

Basta con crear una función de JavaScript y ejecutar el evento de devolución generada:

<%=ClientScript.GetPostBackEventReference(myUpdatePanel, "")%> 

La declaración anterior se pone en su página aspx, y hace referencia exactamente el mismo código generado por el servidor para causar una devolución de datos para su panel. Se puede utilizar al ponerlo dentro de una función en el lado del cliente:

function fncUpdatePanel() { 
    <%=ClientScript.GetPostBackEventReference(myUpdatePanel, "")%>; 
} 

A continuación, se puede adjuntar esa función a cualquier evento en su página (incluso un evento mouseover). Este ejemplo utiliza un lado del servidor para adjuntar el evento:

myUpdatePanel.attributes('onmouseover', 'fncUpdatePanel()') 
+0

¿Me puede explicar en detalle? Necesito activar el panel en el código de JavaScript. su código parece estar en el lado del servidor? – Fer

+0

detalles adicionales agregados – rkw

+1

Esto no funciona porque GetPostBackEventReference es para devoluciones de datos no de copias de respaldo de publicaciones no sincronizadas. Estoy tratando de usar GetCallbackEventReference en su lugar, pero no teniendo problemas para pasar la referencia de control correcta para que funcione. – jlafay

Cuestiones relacionadas