Pesadilla de medianoche. Una aplicación en Ajax que funciona perfectamente, de repente empieza a duplicar registros. Y esto es motivado porque los usuarios le han cojido el tranquillo a la pantalla de alta y cuando llegan al botón de “Guardar”, pulsan como animales (cuatro o cinco veces por segundo).
Teniendo cuidadín de no romper el sistema de ventanas de alerta, y buscando en San Google, he llegado al blog The Disturbed Budda en donde está la siguiente solución que es elegante y limpia.
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" EnablePageMethods="true" EnablePartialRendering="true"
runat="server">
</asp:ToolkitScriptManager>
<script type="text/javascript">
var pbControl = null;
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
pbControl = args.get_postBackElement(); //the control causing the postback
pbControl.disabled = true;
}
function EndRequestHandler(sender, args) {
pbControl.disabled = false;
pbControl = null;
}
</script>
Este script, que captura todos los eventos de postback asíncronos e inhabilita el control emisor hasta que haya una respuesta, hay que situarlo entre el scriptmanager y el updatepanel. En este caso particular entre el ToolkitScriptManager y el ContenPlacer de la MasterPage.
De todas formas debería hacerle una refactorización para usarlo solamente en los controles del tipo button y ver si puedo hacerlo en JQuery.
Seguro que es útil,
No hay comentarios:
Publicar un comentario