14.04.2013 Views

Tema AJAX

Tema AJAX

Tema AJAX

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Programación avanzada en .NET con C#<br />

Servicio de Informática<br />

20<br />

<strong>AJAX</strong><br />

desencadena PageRequestManager es initializeRequest, que tiene lugar antes de que se<br />

produzca una devolución de llamada asincrónica.<br />

El segundo parámetro que se transmite a un controlador de initializeRequest es un objeto del<br />

tipo initializeRequestEventArgs. Este objeto contiene un método get_postBackElement que<br />

identifica el botón o el elemento que ha desencadenado la actualización. También dispone de<br />

un método set_cancel que se puede usar para cancelar una devolución de llamada antes de<br />

que ocurra. Este es un ejemplo del método set_cancel en acción:<br />

<br />

var prm = Sys.WebForms.PageRequestManager.getInstance();<br />

prm.add_initializeRequest(inicia);<br />

function inicia(sender, args)<br />

{<br />

args.set_cancel(!confirm(‘¿Seguro?’));<br />

}<br />

<br />

En este ejemplo, antes de que se ejecute una devolución de llamada, un controlador de<br />

intializeRequest abre un cuadro de confirmación que pregunta al usuario si debe continuar la<br />

actualización. Al hacer clic en Cancelar en el cuadro de confirmación, se transfiere true a<br />

set_cancel, lo que detiene en seco la devolución de llamada.<br />

En la vida real, probablemente no le interesa pedir confirmación al usuario antes de permitir<br />

que continúe una actualización pero podría ser útil tener la posibilidad de cancelar una<br />

actualización en función de las condiciones que existan en otras partes de la aplicación.<br />

Varios UpdatePanels<br />

Una página puede contener varios UpdatePanels. De forma predeterminada, cuando se<br />

actualiza un UpdatePanel en una página, los demás UpdatePanel de la página también se<br />

actualizan. A veces esto será lo que quiera pero, pero con frecuencia, no necesitará que se<br />

actualicen todos los UpdatePanel como respuesta a la actualización de otros UpdatePanel.<br />

Puede elegir las instancias de UpdatePanel que desee actualizar (y cuándo) si establece en<br />

"Condicional" la propiedad de UpdateMode de cada control UpdatePanel de la página.<br />

A continuación, cuando se actualice un UpdatePanel y éste llame a un controlador de eventos<br />

del cliente, llame a UpdatePanel.Update en los demás paneles que desee actualizar. De este<br />

modo se reduce la carga en el servidor, al disminuir el número de controles que se<br />

representan, y se reduce el volumen de datos de la respuesta porque los UpdatePanel que no<br />

se actualicen no agregarán nada a la respuesta.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!