Esta serie de posts se daran a manera de Hands On Lab sobre el framework AJAX de Microsoft. Exploraremos las bondades del lado del servidor y tambien del lado del cliente de ASP.NET AJAX. Utilizaremos una pequeña base de datos CarPictures que estoy empleando en otros ejemplos. Al final del post se podra descargar el codigo completo.
Usando capacidades de servidor de ASP.NET AJAX
En este ejercicio crearemos un sitio web en el que se utilizaran los controles de ASP.NET AJAX ScriptManager, UpdatePanel, Timer y UpdateProgress.
Tarea 1 – Creacion del formulario y uso de UpdatePanel
Para completar esta tarea realizaremos lo siguiente:
- Abra Microsoft Visual Studio 2008 desde Inicio | Todos los Programas | Microsoft Visual Studio 2008 | Microsoft Visual Studio.
-
Crearemos el sitio web AjaxWebSite.

-
Agregaremos una AJAX WebForm Default.aspx.

-
Agregaremos tambien a nuestro sitio web LINQ To SQL CarPictures.dbml
-
Empezaremos por la edicion de Default.aspx utilizando los controles del grupo AJAX Extensions
- Ahora agregaremos un UpdatePanel (id=”upPanel”)
y agregaremos dentro de este un DropDownList (id=ddlCountries,AutoPostBack=”true”) y un DataList (id=lstManufacturers,
BorderStyle=“Solid” BorderWidth=“1px” BorderColor=“#006699″ GridLines=“Horizontal”) -
Ahora agregaremos un dos controles control LinqDataSource. El primero seleccionaremos datos de la tabla Country, los campos Name y ID (id=srcCountries, ContextTypeName=”CarPicturesDataContext” Select=”new (ID, Name)” TableName=“Countries”). Del segundo seleccionaremos datos de la tabla Manufacturers, los campos Name y URL, teniendo como fuente de where expression el control ddlCountries (ID=srcManufacturers ContextTypeName=”CarPicturesDataContext” Select=”new (Name, URL)” TableName=”Manufacturers” Where=”CountryID == @CountryID“)
- Estableceremos la fuente de datos de ddlCountries
(DataSourceID=”srcCountries” DataTextField=”Name” DataValueField=”ID“)
- Editaremos el ItemTemplate de lstManufacturers
agregando los controles Literal (id=ltlName,Text=“<%# Eval(“Name”)%>”) y Hyperlink (id=lnkURL, Text=”Ir a sitio web” NavigateUrl=”<%# Eval(“URL”)%>”) de manera opcional tambien podemos editar el HeaderTemplate.
-
El diseño de pagina debe quedar de la siguiente manera:
- Probaremos nuestro sitio web

- Notese que al momento de seleccionar algun pais, la pagina no realiza postbacks.
Tarea 2 – Uso de UpdateProgress
- Se agregara ahora un control UpdateProgress(id= upProgress) encima del control lstManufacturers, en su propiedad AsociatedUpdatePanelID estableceremos el ID del UpdatePanel creado anteriormente upPanel.
- Editaremos el control upProgress agregando en el un control Image (id=imgLoading, ImageUrl=”~/loading.gif“) y un texto “en progreso…”.
-
Probaremos nuevamente nuestra pagina:
- Notese que esta vez en cada round-trip se muestra el contenido del control UpdateProgress insertado.
Tarea 3 – Uso de Timer
- Ahora fuera del UpdatePanel creado, agregaremos otro UpdatePanel(id=upTime) al cual le agraremos un control Literal (id=ltlSeconds, Text=”0“) y un texto previo “usted esta en esta pagina” y posterior “segundos”.
-
Agregaremos el control Timer (id=tmrSeconds, Interval=”1000“) fuera del UpdatePanel creado, estableciendo su evento OnTick :
protected void tmrSeconds_Tick(object sender, EventArgs e)
{
ltlSeconds.Text = (int.Parse(ltlSeconds.Text) + 1).ToString();
}
-
Ahora en la vista de codigo, agregaremos la seccion Triggers en el UpdatePanel upTime
agregando un AsyncPostBackTrigger estableciendo las propiedades de la siguiente manera:<Triggers>
<asp:AsyncPostBackTrigger ControlID=”tmrTime” EventName=”Tick” />
</Triggers>
- Probaremos nuestra pagina
- Notese que la pagina actualiza el mensaje de segundos, sin embargo no permite hacer una “comoda” seleccion del pais. Pasaremos a corregir esto en un paso.
-
En el UpdatePanel upPanel cambiaremos la propiedad UpdateMode=”Conditional” y procederemos nuevamente a probar la pagina:
Analisis del Ejercicio
- Hemos utilizado las capacidades de servidor de ASP.NET AJAX, los controles UpdateProgress, Timer y UpdatePanel. En la practica el ASP.NET AJAX server framework consiste en este ultimo control.
- Es necesario para utilizar las capacidades de ASP.NET AJAX la presencia del control ScriptManager
- UpdatePanel participa en el tiempo de ejecucion tanto del lado del servidor como del cliente. Captura los postbacks y realiza un Ajax-Postback/Asynchronous-PostBack.
- Por defecto UpdatePanel captura los Postbacks producidos en la pagina, sin embargo podemos hacer que actualice contenidos desde un control localizado fuera del contenido especificando un trigger.(para el ejemplo del Timer). El trigger AsyncPostBackTrigger causa un AjaxPostBack, el PostBackTrigger causa un postback normal a la pagina.
- Si no asociamos un Timer a un UpdatePanel, realizara PostBacks
-
UpdateProgress muestra un mensaje de progreso de descarga de nuevo contenido de la accion asincrona
Nota: Es de recomendacion utilizar una imagen animada en el UpdateProgress
Bueno, este es el primer post de 1,2,3 ASP.NET AJAX, espero les haya sido de mucha utilidad ^^. Si hubiera comentarios aportadores o preguntas no duden en escribir.
El codigo lo pueden descargar de aqui :
Posteado desde Microsoft Word 2007
J
Post.End(“Se vienen mas novedades en cidesoft.com.pe, siguenos“);