asp.net - Llamar a una función de Javascript después de UpdatePanel Postback Issue
ajax javascript-events (3)
Podría crear un método de servicio web simple que devuelva la matriz de javascript a la página cuando sea necesario y ajustar la llamada a ese servicio web en un método de javascript. Invocar el método javascript para actualizar la matriz en la memoria en el lado del navegador funcionará mejor que esperar que el literal de la matriz js se UpdatePanel
nuevamente en UpdatePanel
devoluciones de UpdatePanel
de UpdatePanel
con éxito.
Básicamente tengo en mi UpdatePanel un literal que genera una matriz javascript basada en un método en mi código.
No tengo ningún problema a la hora de cargar mi contenido en la carga de la página. Pero si trato de realizar una búsqueda para actualizar el literal de mi matriz de javascript dentro de mi panel de actualización, descubrí que el literal se actualiza en la devolución después de que el javascript ya se ha activado.
Aquí hay un ejemplo básico de lo que tengo:
<script type="text/javascript">
function BindMyFunction(itemList)
{
//Do something
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<!-- Literal containing generated JS array -->
<asp:Literal ID="ProfileJavscriptOutput" runat="server"></asp:Literal>
<ul id="person-search">
<li><asp:TextBox ID="TxtFirstname" runat="server" Text=""></asp:TextBox></li>
<!-- Update Literal onClick -->
<li><asp:ImageButton CssClass="searchbtn" ID="ImageButton1" runat="server" OnClick="ImageButton1_Click" /></li>
</ul>
<!-- Some jCarousel rendered -->
</asp:UpdatePanel>
He estado mirando las siguientes publicaciones:
ASP.NET - UpdatePanel y JavaScript
llamar a javascript después de la actualización postpanel
Pero parece que no puedo aplicarlo correctamente a mi código.
Funciona bien cuando no uso un UpdatePanel. Pero es un requisito para que la posición de la página no se mueva cuando se realizan búsquedas.
Puedes agregar el siguiente código en el evento Page_Load:
ScriptManager.RegisterStartupScript(Me.rptGridAlbum, rptGridAlbum.GetType, "scriptname", "somejavascript", True)
Esto activará el javascript en su página después de la devolución de llamada AJAX.
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm != null) {
prm.add_endRequest(function (sender, e) {
if (sender._postBackSettings.panelsToUpdate != null) {
DisplayCurrentTime(); // here your javascript function
}
});
};