Focus utilizando ASP.NET Ajax
A todos aquellos early adopters que ya estamos utilizando ASP.NET Ajax para desarrollar aplicaciones empresariales, nos hemos dado cuenta que la asincronia tiene sus ventajas. Pero que pasa cuando empiezo el duro trabajo de emular funcionalidad simple que ya venia utilizando en mis aplicaciones y que requerian rigurosamente de un postback para registrar los nuevos scripts que deseo incorporar para poder presentar cierta funcionalidad al usuario.
Pues como los que me leen ya han de conocer y los que no lo conozcan pues que esperan para empezar a utilizarlo.
En toda página en la que se desee implementar la funcionalidad que nos proveen las nuevas extenciones de microsoft para AJAX es necesario agregar uno y solo un ScriptManager. Pero para que sirve este maravilloso ente desconocido de nuestras nuevas aplicaciones. Pues como bien dice su nombre para administrar todos los scripts que son enviados al cliente. Y esto tiene mucho sentido al momento que nos ponemos a analizar el como funciona esta herramienta. Si bien se han desarrollado multiples caracteristicas para AJAX y cada una personalizada a cada tipo de explorador que utilizamos no todos esos scripts son descargados por nuestro explorador. Y ese es el trabajo prinicipal de este script manager. Entregar al explorador que estamos utilizando aquellos Scripts que son necesarios para nuestra apliación.
Y bueno pues si este es el administrador de los scripts, entonces podemos utilizarlo para que apartir de el en una llamada asincrona se encarge de llevar nuestros scripts al navegador.
Pero como se puede realizar esta operación, de la siguiente manera,
protected void SetFocus(string controlId)
{
ScriptManager.RegisterClientScriptBlock(this,
typeof(_Default),
"FocusScript",
@"window.setTimeout('DoFocus()', 1);
function DoFocus()
{
try {
document.getElementById('" + controlId + @"').focus();
} catch (ex) {}}", true);
El metodo que nos permite registrar los Scripts en el formulario es RegisterClientScriptBlock de la clase ScriptManager, los parametros son (this -> refieriendome a este formulario, _Default -> refiriendome al tipo de este formulario, "FocusScript" -> Nombre del Bloque, Luego aqui va el Script, y luego una bandera que indica si debe o no agregar los tags de script.
Dentro del script ejecuto un metodo de la ventana llamado setTimeOut que me permite indicar en cuanto tiempo quiero que se ejecute cierta operación que en este caso es DoFocus. Y DoFocus lo que hace es buscar el elemento que necesito tenga el foco y darselo.
Suena sencillo.
Pues ahora les toca a ustedes.
Saludos





0 Comments:
Publicar un comentario en la entrada
Links to this post:
Crear un vínculo
<< Home