Buenas! Me pongo a escribir esto porque hay gente q aun no sabe como implementar AJAX en sus páginas para evitar la famosa recarga de página cada vez que acceden a datos del servidor.
Lo primero es decir que este tutorial es para gente que se mueve bien con ASP.NET, no voy a explicar las cosas desde 0 porque opino que la gente q quiere meterse con esto, sabe de lo que hablamos.
Empecemos por el principio...¿Qué es AJAX? No me voy a meter en definiciones...para ello miren http://es.wikipedia.org/wiki/AJAX , digamos simplemente que AJAX es una técnica de desarrollo web para acceder a datos, funciones (en fin...lo que queramos...) del servidor sin tener que recargar la página para ello.
Pongamos un ejemplo: (Los ejemplos los escribiré en Visual Basic, pero no hay ningún problema en adaptarlos a C# por ejemplo)
Supongamos que tenemos un checkbox que cada vez que lo marcamos, ponemos una variable denominada "Unidad" que tiene que estar en el servidor a 1 y cuando lo desmarcamos está a 0.
Sin utilizar AJAX, tendríamos que definir el checkbox con runat="server", luego decirle que el autopostback=true para que en el evento on change podamos poner:
If Checkbox1.checked = True then
Unidad = 1
Else
Unidad = 0
End If
El problema de esto es que cada vez que se clickee el checkbox, la página se va a reiniciar porque necesitamos acceder a datos del servidor.
Para eso, podemos utilizar AJAX.
Veamos los pasos a realizar:
1) Vamos a instalar una dll de Ajax libre que nos ayudará en no tener que escribir un tochazo de código para una tonteria.
http://ajax.schwarz-interactive.de/csharpsample/default.aspx (Aunque ponga que es para C#, podremos utilizarla en V
2) Agregamos la referencia de la DLL a nuestro proyecto
3) En el Page_Load de nuestra página, pondremos lo siguiente:
Ajax.Utility.RegisterTypeForajax(GetType(NOMBRECLASE)) , donde NOMBRECLASE será el nombre de la clase de la página (Es decir, yendo al principio de la página .aspx pondrá algo de Inherits="NOMBRECLASE"))
4) Agregaremos lo siguiente al web.config de nuestro sitio en el apartado <system.web>
<httpHandlers>
<add verb="POST,GET" path="AJAX/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>
5) Creamos una función para escribir el evento
<Ajax.AjaxMethod()> _
Public Function CambiarEstado(ByVal value As String) As String
if value = "" Then
Unidad = 0
Else
Unidad = 1
End If
Return "Hemos terminado!!!"
End Function
6) Creamos el checkbox que llame a la función
En el aspx ponemos
< INPUT type="checkbox" id="CheckBox1" onclick="NOMBRECLASE.CambiarEstado(checkbox1.value,CambiarEstado_Callback)">
7) Creamos un javascript que controle el callback (en nuestro ejemplo la función devuelve "hemos terminado!!!", pero podría devolver todo lo que nos diera la gana, como el resultado de una suma, o el resultado de una consulta select....."
function CambiarEstado_CallBack(response)
{
if (response.error != nul)
{
alert("Que tenemos un fallo!!!");
return;
}
alert(response.value);
}
En response.value tendremos el return de la función CambiarEstado, que nos puede servidr para colocarlo por ejemplo en un textbox1.
document.getElementById('textbox1').value = response.value;
Y listo! Tendremos un acceso a una función del servidor sin recargar la página
Bueno, si alguien está interesado en que suba un proyecto con todo esto hecho, lo haré y si alguien quiere más ejemplos, de accesos a BB.DD. o de lo q sea, sin problemas.
Si a nadie le sirve esto, pues trabajo a la basura.
Siento la redacción, si hay algo que no se entienda preguntad