Créditos: Saulo Giori Pacífico.
Twitter - twitter.com/saulopacifico - @saulopacifico
Facebook - facebook.com/SauloPacifico
Download do projeto completo
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Update_Panel.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Minha página</title>
</head>
<body>
<form id="form1" runat="server">
<%-- Dentro da tag "form" que a página aspx já traz nativamente,
adicionamos o componente da nossa aba AJAX Extensions, o Script Manager.
Ele é obrigatório para o uso de qualquer outro componente da aba e
para o uso do Ajax Control Toolkit (Nesse caso podemos usar também
o Toolkit Script Manager) --%>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<%--Insiro um Update Panel (procure na aba AJAX Extensions) --%>
<asp:UpdatePanel runat="server" ID="upProcessamento" UpdateMode="Conditional">
<ContentTemplate>
<%-- A área a ser processada, deve ser inserida dentro do Content Template --%>
<p>Clique no botão abaixo para processar alguma coisa:</p>
<%--Um botão com o evento Click já programado --%>
<asp:Button Text="Processar" runat="server" ID="btnProcessamento" OnClick="btnProcessamento_Click" />
</ContentTemplate>
<Triggers>
<%--Dentro dessa tag ela reconhece como um postback assíncrono, passo o mesmo
Id do botão dentro de ControlID e o EventName como Click -->
Para outros componentes é só trocar o ControlID e o EventName pelos
respectivos IDs e Eventos de outros controles--%>
<asp:AsyncPostBackTrigger ControlID="btnProcessamento" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<%--Este componente que é o responsável por dar ideia de processamento ao usuário
mediante uma requisição do mesmo --%>
<asp:UpdateProgress runat="server">
<ProgressTemplate>
<%--Este é o componente responsável pelo gif de processamento ou qualquer
outro conteúdo que eu queira exibir --%>
Processando... Você será redirecionado em 5 segundos
<img src="imagens/loading.gif" alt="Carregando" />
</ProgressTemplate>
</asp:UpdateProgress>
</div>
</form>
</body>
</html>
Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Update_Panel
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnProcessamento_Click(object sender, EventArgs e)
{
//Implemento todo o clique do botão
//Paraliso a página por 5 segundos
System.Threading.Thread.Sleep(5000);
//Redireciono para outra página
Response.Redirect("Pagina_2.aspx");
}
}
}