post icon

Invocar métodos del Servidor con JavaScript en ASP.Net

A veces necesitamos ejecutar un código de servidor por alguna extraña regla de negocio, justamente cuando ocurre un evento que sólo podemos controlarlo en el lado Cliente con JavaScript, pero cómo hacer que el servidor se entere de los eventos del lado cliente?.

Una manera que puede solucionarnos el problema es definiendo que el webcontrol haga postBack, y en el evento Load de la página preguntamos si es la primera vez que se carga o está respondiendo a una llamada de un control desde el lado cliente.

1
2
3
4
5
protected void Page_Load(object sender, EventArgs e)
{
	if (Page.IsPostBack)
		hacerAlgo();
}

Esto ayudará a más de uno, pero esto se ejecutará por cada control que tengamos y haga postBack. Otro caso y justo el que estamos tratando en el artículo es reaccionar desde el servidor solamente si un control especifico cambió, no si cualquier control cambio. Esto podemos hacerlo desde JavaScript.

En mi ejemplo ya que estoy teniendolo a mano, usare un comboBox de DevExpress (webControl no nativo de Visual Studio, el mismo pueden verlo en la imagen de abajo) Aunque no utilicen el mismo objeto el concepto pueden aplicarlo de igual modo.

comboBox

En el ejemplo lo que haremos es que cuando JavaScript nos diga que fue cambiado el item seleccionado en el combo, haremos un postBack al servidor, quedaría  algo así:

js

Como ven, a ese postBack le ponemos un “identificador“, y en el método Load de la página preguntaremos si este postBack fue invocado:

1
2
3
4
5
protected void Page_Load(object sender, EventArgs e)
{
	if (Request.Params["__EVENTTARGET"] == "CambioCliente")
		CargarRepositorio();
}

Este ejemplo es muy sencillo, y podría resolverse de otro modo incluso, pero la intención es demostrar la funcionalidad más bien, básicamente sigue la misma temática con implementaciones más complejas.

Comentarios desde Facebook:

  1. avatar
    CEDAGAMO PERU Google Chrome Windows
    12 Julio 2013 at 16:00 #

    Gracias

    form.aspx

    function btSi_Click() {
    __doPostBack(‘btSi’);
    }
    function btNo_Click() {
    __doPostBack(‘btNo’);
    }

    ….

    form.cs
    ….
    protected void Page_Load(object sender, EventArgs e)
    {
    if (Request.Params[“__EVENTTARGET”] == “btSi”)
    btSi_Click(sender, e);
    else if(Request.Params[“__EVENTTARGET”] == “btNo”)
    btNo_Click(sender, e);

    }
    ….

Trackbacks/Pingbacks

  1. Como Hacer Postback con JavaScript y enviar parámetros al servidor en ASPN | DevTroce.com WordPress - 12 Enero 2011

    […] Postback con JavaScript y enviar parámetros al servidor en ASPNet Ya vimos como invocar métodos del servidor con JavaScript anteriormente, a esto podemos agregarle que quisieramos pasarle argumentos o parametros que tenemos […]

  2. Tweets that mention Invocar métodos del Servidor con JavaScript en ASP.Net | DevTroce.com -- Topsy.com UNITED STATES - 24 Julio 2010

    […] This post was mentioned on Twitter by Hire ASP.Net Experts and Ronald Riveros, DevTroce. DevTroce said: Invocar métodos del Servidor con #JavaScript en ASP.Net: A veces necesitamos ejecutar un… http://goo.gl/fb/9ot41 […]

Responder