Hola a todos/as!!!
Siempre es interesante que en una aplicación web, y por carencia de MsgBox, mostrar los errores al cliente, pedirle que entre un dato o bien simplemente mostrarle información.
Para ello, nos acompaña nuestro maravilloso script de cliente: JavaScript. Debo decir que cada día me sorprende más la potencia que se puede dar en el browser del cliente y en nuestra aplicación.
Bien, os voy a poner un pequeño ejemplo y creo que muy interesante de pedir confirmación al cliente para que nos diga si Acepta o Cancela una opción.
Lo primero es hacer aparecer ese confirm de Javascript, para ello deberemos crear un nuevo sitio web ASP.NET AJAX-Enabled Web Site en nuestro Visual Studio. Es preciso que sea así ya que debemos tener el ScriptManager para que nos gestione el script.
Ahora desde el Code behind (Default.aspx.cs o .vb) de .net ya podemos hacer aparecer nuestro confirm:
protected void funcion(){
try
{
/* acciones */
}
catch (Exception ex)
{
string script = “if(confirm(‘¿Esta seguro de ” + “borrar?’)) { ” + “__doPostBack(‘Aceptar’,'true’); ” +” } else{__doPostBack(‘Cancelar’,'false’);}”;
ClientScript.RegisterStartupScript(this.GetType(),“nombre”, script);
}
}
Bien, y ahora para capturar el __doPostBack será necesario poner esto en el aspx, el __doPostBack de forma transparente asignara los valores a __EVENTTARGET y __EVENTARGUMENT, que deben estar al final de la web y fuera del form:
<input type=”hidden” name=”__EVENTTARGET” id=”__EVENTTARGET” value=”" />
<input type=”hidden” name=”__EVENTARGUMENT” id=”__EVENTARGUMENT” value=”" />
Y luego y paso final en el LOAD del aspx:
protected void Page_Load(object sender, EventArgs e)
{
if (this.Page.IsPostBack)
{
//Recojemos los parametros del PostBack de javascript
string controlName = Request.Params.Get(“__EVENTTARGET”);
string controlConf = Request.Params.Get(“__EVENTARGUMENT”);
//El controlConf es optativo, es el segundo parametro
//que yo le paso true/false en el __doPostBack(‘param1′,’param2′);
//se puede mandar vacio si no quieres obtener argumentos de evento
switch (controlName)
{
case “Aceptar”:
if (Convert.ToBoolean(controlConf))
{
//ejecutamos una acción/función
}
break;
case “Cancelar”:
if (!Convert.ToBoolean(controlConf))
{
//ejecutamos otra acción/función
}
break;
}
}
¿Dudillas? Sin problema, preguntarme ![]()
Además aquí el enlace con el ejemplo