Painel de Atualização ASP.NET pára jquery de trabalho
-
05-07-2019 - |
Pergunta
Eu tenho binded eventos jQuery definidos para mouseleave mouseenter, bem como arrastável jQuery. Os divs são colocados em um painel de atualização e informações quando um botão é clicado é enviado para o banco de dados e painel de atualização é atualizado. No entanto, quando o painel é atualizado os eventos jQuery não funcionam mais. Alguma idéia de por que isso seria o caso?
Solução
Você pode adicionar um disparador assíncrona para sua página para chamar uma função JavaScript / jQuery após qualquer chamada assíncrona.
Coloque este código em seu Page_Load () de seu código aspx trás:
//This script handles ajax postbacks, by registering the js to run at the end of *AJAX* requests
Page.ClientScript.RegisterStartupScript(typeof(Page), "ajaxTrigger", "Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);", true);
Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "EndRequest", "function EndRequestHandler(sender, args){AsyncDone();}", true);
Este trecho de código irá chamar especificamente a função AsyncDone JavaScript / jQuery ();
Outras dicas
tente usar
function pageLoad(sender, args)
{
// JQuery code goes here
}
em vez de
$(document).ready(function() {
// JQuery code goes here
});
Isto irá funcionar quando um botão que está dentro de um painel de atualização é clicado; ele vai para o servidor e vai voltar a adicionar o jQuery quando ele volta. No entanto, isso não funciona com postbacks assíncronos causado por um controle, como o OE: AJAXUploader mas combinando isso com a versão Bryans você pode manipular postbacks assíncronos bem
Tenha um olhar a este post de Encosia que lhe dá um par de formas de religação após as atualizações assíncronas. Achei isso resolvido o meu problema que foi semelhante.
Use vivo .
$("div").live("mouseenter", function(){
// do something
});
O Bryan tem a resposta. Eu normalmente acréscimo que com alguns manipuladores de eventos, para esfola e tal, que o fogo depois de postagens com este:
/**
* .NET Event Handlers
* When new code is added on to the client by way of
* .NET PostBacks, CSS is typically ignored. This method
* can be used to add CSS to new elements as they are added
* asynchronously. It calls a script at the end of every
* partial post back request.
*
* @example - Core.NETEventHandlers.AsyncPostBack.Init();
*/
var NETEventHandlers: {
/**
* Async Post Back Handler
* calls a script at the end of every partial post back request
*/
AsyncPostBack: {
EndRequest: {
Add: function() {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(NETEventHandlers.AsyncPostBack.EndRequest.Handler);
} // EO Add
, Handler: function(sender, args) {
// Handlers here.
alert('Hello World');
} // EO Handler
} // EO endRequest
, Init: function() {
Sys.Application.add_init(NETEventHandlers.AsyncPostBack.EndRequest.Add);
}
} // EO AsyncPostBack
} // EO dotNETEventHandlers