Archivo por días: 11 octubre, 2012

Asignar el foco a un control al cargar una página web aspx

Pues eso… que con la cabeza que tengo (se me olvidan las cosas o lo mismo mi disco duro ya está lleno, a saber) me he decidido a publicar este "truco" para ASP.NET usando páginas web ASPX, ya que hoy lo he necesitado y no me acordaba cómo había que hacerlo… o casi… ahora te explico el casi.

 

Asignar el foco a un control de una página web ASPX al cargarla

La idea es que hay que "darle el foco" al control en cuestión y aquí no vale eso de asignar un valor cero (0) a la propiedad TabIndex del control, que es lo que haríamos en una aplicación de escritorio (y casi me atrevería a decir que a una de XAML).

Otra cosa que se te puede ocurrir es asignar el foco al cargar "el formulario" (en este caso la página web), y por ahí iríamos bien… pero en el caso de las páginas web ASPX el evento Load (en realidad Page_Load) no se produce o al menos no podemos interceptarlo salvo que indiquemos en la directiva @Page que queremos hacerlo, esto lo conseguimos asignando un valor "true" a la propiedad AutoEventWireup (el valor predeterminado o por defecto, es "false").

 

Y uniendo todo lo dicho tendríamos algo así:

<%@ Page Language="vb" AutoEventWireup="true" Strict="true" %>

<!DOCTYPE html>
<script runat="server">

    ' Para que se ponga el foco en el control indicado
    ' en @Page hay que indicar AutoEventWireup="true"
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        If IsPostBack = False Then
            txtTotal.Focus()
        End If
    End Sub
    
</script>

 

Espero que te pueda ser útil

Nos vemos.

Guillermo

P.S.

Nota del 28/Oct/2012:

Mira esta actualización que seguro que te interesa también:

Asignar el foco a un control al cargar una página web aspx (ampliación y recapitulación)