Utilizar AJAX con JQuery en ASP .Net
Jquery es un framework javascript bastante bueno, nadie lo puede dudar, y Ajax, es una tecnología que permite crear aplicaciones bastante mas robustas y dinámicas que le dan al usuario una mejor experiencia; al trabajar con una página web será necesario en algún momento combinar ambas tecnologías para conseguir una aplicación al estilo Web 2.0.
Voy a poner a continuación un ejemplo de como utilizar JQuery para hacer invocaciones Ajax en una aplicación ASP .Net. La idea de este ejemplo es simple, cargo un DropDownList de ASP .Net con algunos elementos, en este caso carreras de estudio, además se tiene un segundo DropDownList pero vacío, al seleccionar una carrera, se debe llenar el segundo DropDownList con los cursos que se dicten en la carrera. El resultado debe ser mas o menos como la imágen de la izquierda y el proceso obviamente se debe realizar sin postback. Como siempre, el archivo con el código completo lo pueden conseguir al final del artículo.
La definición de mi primer DropDownList la haré de la siguiente manera:
<asp:DropDownList ID=”ddlCarreras” runat=”server” AppendDataBoundItems=”True” onChange=”listarCursos(this.value);” />
y llenaré dicho DropDownList en el evento Load de la página como normalmente lo haría. En esta definición del control hay un evento de javascript, cuando del lado del cliente yo seleccione un elemento se ejecutará la función listarCursos de javascript, la cual recibe el valor seleccionado.
Ahora, analizaremos lo que hace la función listarCursos de javascript:
function listarCursos(idCarrera){
$.ajax({
type:“POST”,
url:“Controladores/DevolverDatos.ashx”,
data:”carrera=” + idCarrera,
success: mostrarCursos
});
}
function mostrarCursos(html){
$(‘#<%=ddlCursos.ClientID %>’).html(html);
}
La función listarCursos hace un llamado a través de ajax controlado por jquery indicándole que enviará datos a usando el método POST hacia el archivo DevolverDatos.ashx, que es un controlador HTTP de ASP .Net, luego le indicamos, los datos que queremos enviarles como un par clave=valor separado por el signo igual (=); finalmente le indicaremos a nuestro método ajax que función debe realizar cuando termine de ejecutarse la invocación al controlador ashx, en este caso, se ejecutará el método mostrarCursos, el cual recibe el código html que devuelve el controlador. Esta función lo único que hace es agregar el html que contiene las opciones de un select de html en el DropDownList para cursos.
La estructura de un controlador ASHX es la siguiente:

y el código que se quiera utilizar para la funcionalidad a realizar se colocará en el método ProcessRequest, y para devolver el html que necesitamos utilizamos context.Response.Write(“Aqui mi texto”);
En el archivo que pueden descargar a continuaciòn esta el ejemplo y ya ustedes podrán personalizarlo a su antojo. Solo es cuestión de ir leyendolo de a pocos.
Descargar Ejemplo JQuery y Ajax
Espero que les sea de utilidad.
Saludos.






Enero 7th, 2009 at 4:19 pm
La misma funcionalidad se puede lograr colocando los combos en un UpdatePanel, llenando el segundo combo en el evento de cambio del primero y haciendo un Update() al panel, sin tener que usar jQuery ni un archivo ashx extra. ¿Hay alguna diferencia de performance o es lo mismo?
Hace un tiempo vengo siguiendo tu blog, sigue con los buenos posts broder.
Enero 8th, 2009 at 2:55 pm
Hola Joaquin, gracias por tus palabras… te explico.
Si bien es cierto la misma funcionalidad se puede realizar con el UpdatePanel, lo ideal en ese caso sería colocar solo el segundo DropDownList en el UpdatePanel y agregar un Trigger al UpdatePanel para que funcione con el evento SelectedIndexChanged del primer DropDown.
La diferencia es que aún al usar el UpdatePanel, se ejecuta nuevamente el evento Upload de la página y se recarga los controles dentro del UpdatePanel, al utilizar el ajax de jquery solo se actualiza la parte que tu le indiques y no se recarga el control por completo.
Hay una mejora en la performance, pero puedes utilizar cualquiera de las alternativas dependiendo de que vayas a hacer, eso depende de quien lo programa.
Este ejemplo es solo para mostrar como se puede trabajar con ajax de jquery.
Saludos.
Enero 18th, 2009 at 3:56 pm
Encuentro muy bien este metodo para usar los elementos de asp.net y sus ventajas en lugar de usar los elementos html. Pero veo que limita a usar el codijo js en la misma pagina en lugar de poder ocupar un documento aparte para el codigo js o ¿hay algo que me pierdo? ¿hay alguna posibilidad de ocupar el ‘#’ en un documento js?
Enero 20th, 2009 at 11:35 pm
Buen ejemplo. Sólo quisiera saber si hay forma de NO utilizar ASHX y utilizar WebServices de página?
Enero 23rd, 2009 at 5:57 pm
@Raul Duque, si hay forma de hacerlo usando JSON, estaba haciendo un post sobre ello, pero el tiempo me esta quedando corto, sin embargo, debe haber info en la red al respecto.. cuestión de buscar.
Debo apurarme con los posts no?
Saludos.
Marzo 3rd, 2009 at 8:09 pm
Me sale error de validacion al hacer postback
Enero 11th, 2010 at 2:09 pm
Hola.
Gracias por el articula, excelente. Pero me queda duda si tengo una capa de datos que me devuelve el listado para el combo como hago para cargarselo al combo con jquery?