martes, 31 de enero de 2012

Problema evento onclick radtoolbar en el cliente

Existe un error típico en el manejo de eventos en los RadControls de Telerik, para este caso hablo de una mezcla de radtoolbar con radgrid. Para contextualizar mejor, el caso trata de una simple grilla como la siguiente:




Ahora tenemos un radToolbar, con el cual queremos eliminar uno o varios registros de la grilla, esto manejando los el evento del onclick desde el lado del cliente usando el siguiente código:

<script type="text/javascript">
    <%=RadToolbar.ClientID%>.attachEvent("OnClientClick","RadToolbar_OnClientClick");
    </script> 

function RadToolbar_OnClientClick(sender, e)
    { 
        // Nuestra funcionalidad
           alert("Evento controlado");
    }

Hasta aquí, pareciera no haber ningún problema, por lo cual ejecutamos la acción y efectivamente, podemos ver el mensaje "Evento controlado", pero si tratamos nuevamente de generar la acción, este manejador se salta y no podemos ver nuestro mensajito. ¿Por qué?

Sucede que al actualizar a través de RadAjax el evento OnClick se libera, o en otras palabras, se borra el atributo para el evento, por lo cual no se va a ejecutar hasta que recargues la página nuevamente. ¿Solución?

Pues si no hubiera solución no estaríamos aquí. Lo que debemos hacer es usar la propiedad "ClientEvents-OnResponseEnd" del RadAjaxManager con la cual vamos a enlazar nuevamente el evento para el radToolbar de esta manera:

Adicionamos la propiedad con el nombre del evento script que se va a implementar para volver a enlazar el control a su evento
ClientEvents-OnResponseEnd="OnResponseEndHandler"

Luego adicionamos el evento script o viceversa
<script type="text/javascript">
function OnResponseEndHandler(sender, arguments)
    {
      <%=RadToolbar.ClientID%>.attachEvent("OnClientClick","RadToolbar_OnClientClick");
    }
    </script>

Luego ejecutemos la acción cuantas veces necesitamos, y tendremos un manejo continuo del evento. Espero esto sirva de ayuda...



2 comentarios:

  1. Javier, me alegra que te sirva, sigo trabajando con estos controles por lo que espero subir nuevas ayudas, también tengo algunos post sobre Datadynamics y .Net.

    ResponderEliminar