Hola, dguizmo:
Claro que se puede obtener el foco en un control. Para esto hacemos uso de nuestro amigo JavaScript J. A continuación tienes un pequeño bloque de JS que te permititá establecer el foco en un control:
var control = document.getElementById(); if( control != null ){ control.focus(); }
Claro que se debe reemplazar por el nombre del control.
Si se tratara de un control HTML simple, podrías establecer en sus propiedades que cuando se le haga clic, establezca el foco en un control (txtNombre, en este caso) de la siguiente manera:
INPUT TYPE=BUTTON OnClick="javascript:txtNombre.focus();" VALUE="Ir a Nombre"
Sin embargo, los controles del lado del servidor manejan sus eventos no mediante JavaScript, sino mediante código del lado servidor (C#, VB.NET). Entonces, lo que haremos será utilizar el código del lado servidor para inyectar el código JavaScript necesario para establecer el foco en el control. J
Las páginas de ASP.NET contienen un método nombrado RegisterStartupScript. Mediante la invocación a Page.RegisterStartupScript, podemos inyectar un bloque de código script que se ejecute precisamente antes que la página sea interpretada por el browser. Los argumentos que necesitamos pasar a RegisterStartupScript son un nombre único para el bloque de script y un bloque de script correctamente formateado.
Para solucionar este problema puedes definir un procedimiento nombrado SetFocus que acepte como parámetro la cadena del nombre del control que recibirá el foco.
Como puedes apreciar en el archivo SetFocus.txt de la descarga, el método SetFocus inserta el nombre del control que obtendrá el foco en la secuencia JS previamente formateada y Page.RegisterStartupScript insertará el bloque de script en la página. La función Chr(34) inserta las comillas dobles (") necesarias para el bloque JS.
Todo lo que necesitarás será llamar a SetFocus el code_behind de la página antes de realizar el post-back.
El método manejador del evento Click del botón que establecerá el foco en el control, será más o menos así:
Protected Sub SetFocusButton_Click(ByVal sender As Object, ByVal e As EventArgs)
SetFocus(TextBox2.ClientID)
End Sub
Entonces, si quisieras establecer el foco en un control llamado TextBox2 (como en el ejemplo), el bloque de código JS que te inyectaría el método quedaría como en el archivo FocusScript.txt de la descarga.
Para descargar el zip con los 2 archivos (SetFocus.txt y FocusScript.txt) haz clic aquí.
Espero que encuentres útil mi aporte. Hasta la próxima.
Я!©ђ!Є ©Я∆ZΨ |