Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cuadro PDF
Cuadro PDF
NET
Introduccin
En esta oportunidad, vamos a realizar un control que permite emular dicha funcin sobre
ASP.NET.
Funcionamiento
window.attachEvent("onfocus", MsgBoxMostrarMensaje)
Esto permite que nuestra funcin MsgBoxMostrarMensaje se ejecute cuando se toma el foco
de la pagina. Dicha funcin evala el contenido de algunas variables y luego, si todava no
se ha mostrado el mensaje, lo hace y marca dicha variable para no mostrarlo de nuevo. En
el caso de la confirmacin, tambin ejecuta una funcin provista por el .NET Framework
para disparar el evento en el servidor. La referencia a esa funcin lo obtenemos tambin
cuando se prepara el control, con Page.GetPostBackEventReference.
Bien, como un ejemplo vale ms que mil palabras y los desarrolladores nos entendemos
escribiendo cdigo, vamos directamente a crear nuestro control. El ejemplo est escrito en
Visual Basic .NET pero es lo bastante simple como para poder traducirlo a cualquier
lenguaje de .NET sin problemas. Adems comentamos todo el cdigo para su fcil
interpretacin.
Option Explicit On
Option Strict On
Imports System.ComponentModel
Imports System.Web.UI
Imports System.Web.UI.WebControls
'Como se ve, se programa el evento onfocus del objeto window y se dispara la funcin.
'La funcin verifica si MsgBoxTextoMensaje esta vaca, si es as, no hace nada, de
'lo contrario muestra el cartel o la confirmacin, y luego vaca la variable.
'En el caso de confirmacin se dispara la funcin java guardada en
'miPostBackOnYes en miPostBackOnNo
Return "<script language=""javascript""> " & _
"var MsgBoxTipoMensaje; " & _
"var MsgBoxTextoMensaje; " & _
"window.attachEvent(""onfocus"", MsgBoxMostrarMensaje); " & _
"function MsgBoxMostrarMensaje() { " & _
"if (MsgBoxTextoMensaje) { " & _
"if (MsgBoxTextoMensaje != """") { " & _
"if (MsgBoxTipoMensaje==2) {" & _
" alert(MsgBoxTextoMensaje); " & _
"} else {" & _
"if (confirm(MsgBoxTextoMensaje)) { " & _
miPostBackOnYes & _
"} else { " & _
miPostBackOnNo & _
"}} MsgBoxTextoMensaje=""""; " & _
" }}} </script>"
End Function
End Class
1. Para identificar el control dentro del cuadro de herramientas es muy til agregar un
icono que lo diferencie de los dems. Cree una imagen de 16x16 y con el nombre
MsgBox.bmp y gurdela en la misma carpeta donde se encuentra la clase
MsgBox.vb.
2. Incluya la imagen en el proyecto y marque: Accin de generacin: Recurso
Incrustado.
3. Compile el proyecto desde el men Generar -> Generar MsgBox.
Probando el control
'Se enva True y False como 2 ltimos parmetros ya que en este ejemplo no se
'necesita hacer PostBack cuando el usuario elige cancelar.
MsgBox1.ShowConfirmation("Este movimiento ya esta conciliado. Esta seguro que desea
grabarlo ?", _
"GRABAR", True, False)
End Sub
Case "ELIMINAR"
'Se confirm que se desea eliminar lo mismo, elimino
'.
'.
MsgBox1.ShowMessage("Registro eliminado.")
End Select
End Sub
Conclusin
Este es un simple ejemplo de como integrar cdigo JavaScript con nuestros controles de
servidor de ASP.NET. Quiero aclarar antes de despedirme, que debido a la facilidad de
ASP.NET de programar para la Web al estilo de formularios Windows, muchos
programadores (principalmente los que conocen poco las tecnologas de la Web) olvidan en
que ambiente se esta desarrollando e intentan programar una pagina Web como si fuera un
formulario Windows. Y en ese sentido este control puede colaborar aun ms a esa
confusin. Es por eso que recomiendo no abusar del uso del mismo y tener en cuenta que
cada vez que se enva un mensaje de confirmacin y el usuario hace clic en aceptar
cancelar hay un ida y vuelta al servidor con todo lo que eso implica. Teniendo en cuenta
esos factores, este control puede ser una manera muy til de interactuar con el usuario
desde el cdigo del lado del servidor.