Exportar (0) Imprimir
Expandir todo

UpdateProgress (Clase)

Actualización: noviembre 2007

Proporciona comentarios visuales en el explorador cuando se actualiza el contenido de uno o más controles UpdatePanel.

Espacio de nombres:  System.Web.UI
Ensamblado:  System.Web.Extensions (en System.Web.Extensions.dll)

[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public class UpdateProgress : Control, 
	IScriptControl
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal) */
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal) */
public class UpdateProgress extends Control implements IScriptControl
public class UpdateProgress extends Control implements IScriptControl
<asp:UpdateProgress />

El control UpdateProgress permite proporcionar comentarios sobre el progreso de la representación parcial de la página. En las devoluciones de datos o representación de la página de inicial, no se muestra el contenido del control UpdateProgress.

La página puede contener múltiples controles UpdateProgress. Cada uno de ellos puede estar asociado a un control UpdatePanel diferente. O bien, puede utilizar un control UpdateProgress y asociarlo a todos los controles UpdatePanel de la página.

El control UpdateProgress representa un elemento div que se muestra o se oculta en función de dónde se origina una devolución de datos y de si se establece el valor de la propiedad AssociatedUpdatePanelID de UpdateProgress.

Asociar UpdateProgress a un control UpdatePanel

Asocie los controles UpdateProgress a un control UpdatePanel estableciendo el valor de la propiedad AssociatedUpdatePanelID del control UpdateProgress. Cuando un evento de devolución de datos se origina en un control UpdatePanel, se muestran los controles UpdateProgress asociados. Si no establece el valor de la propiedad AssociatedUpdatePanelID, el control UpdateProgress muestra el progreso de las devoluciones de datos asincrónicas que se originan en cualquier control UpdatePanel. También se muestra para cualquier control que se desencadene para los paneles.

La propiedad AssociatedUpdatePanelID tiene el efecto siguiente en el comportamiento del control UpdateProgress:

  • Cuando no se establece el valor de la propiedad AssociatedUpdatePanelID, se muestra el control UpdateProgress para las devoluciones de datos siguientes:

    • Devoluciones de datos que se originan desde cualquier control UpdatePanel.

    • Devoluciones de datos que se originan desde controles que son los desencadenadores asincrónicos de cualquier control UpdatePanel.

  • Cuando la propiedad AssociatedUpdatePanelID se establece en un identificador del control UpdatePanel, se muestra el control UpdateProgress para las devoluciones de datos que se originan dentro del control UpdatePanel asociado.

Si la propiedad AssociatedUpdatePanelID se establece en un control que no existe, no se mostrará nunca el control UpdateProgress.

Si la propiedad ChildrenAsTriggers de los controles UpdatePanel se establece en false y se origina una devolución de datos dentro de un control UpdatePanel, se seguirá mostrando cualquier control UpdateProgress asociado.

Especificar el contenido del control UpdateProgress

Utilice la propiedad ProgressTemplate para especificar el mensaje que muestra un control UpdateProgress. Si la propiedad ProgressTemplate está vacía, no se mostrará nada cuando se muestre el control UpdateProgress.

La plantilla puede contener HTML y marcado. Por ejemplo, puede mostrar una imagen animada que notifique al usuario que la devolución de datos se está procesando. También puede mostrar un botón en el que el usuario puede hacer clic para detener la actualización parcial de página. Además, quizá desee evitar el resto de las devoluciones de datos mientras una esté en curso. En el ejemplo siguiente, se muestra el script de cliente que puede usar para realizar estas tareas.

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    protected void Button_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>UpdateProgress Example</title>
    <style type="text/css">
    #UpdatePanel1, #UpdatePanel2, #UpdateProgress1 {
      border-right: gray 1px solid; border-top: gray 1px solid; 
      border-left: gray 1px solid; border-bottom: gray 1px solid;    
    }
    #UpdatePanel1, #UpdatePanel2 { 
      width:200px; height:200px; position: relative;
      float: left; margin-left: 10px; margin-top: 10px;
     }
     #UpdateProgress1 {
      width: 400px; background-color: #FFC080; 
      bottom: 0%; left: 0px; position: absolute;
     }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
    <script type="text/javascript">
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_initializeRequest(InitializeRequest);
    function InitializeRequest(sender, args) {
      if (prm.get_isInAsyncPostBack())
       {
          args.set_cancel(true);
       }
    }
    function AbortPostBack() {
      if (prm.get_isInAsyncPostBack()) {
           prm.abortPostBack();
      }        
    }
    </script>
    <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
    <%=DateTime.Now.ToString() %> <br />
    <asp:Button ID="Button1" runat="server" Text="Refresh Panel" OnClick="Button_Click" />    
    <br />
    Clicking the button while an asynchronous postback is in progress will
    cancel the new postback. New postbacks are only allowed if one is not
    already in progress.
    </ContentTemplate>
    </asp:UpdatePanel>
    <asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
    <%=DateTime.Now.ToString() %> <br />
    <asp:Button ID="Button2" runat="server" Text="Refresh Panel" OnClick="Button_Click"/>    
    </ContentTemplate>
    </asp:UpdatePanel>
    <asp:UpdateProgress ID="UpdateProgress1" runat="server">
    <ProgressTemplate>
      Update in progress...
      <input type="button" value="stop" onclick="AbortPostBack()" />
    </ProgressTemplate>
    </asp:UpdateProgress>
    </div>
    </form>
</body>
</html>


Puede utilizar el código de ejemplo estableciendo el atributo onClick de un control HtmlButton en "AbortPostBack ()". Para obtener más información, vea el método abortPostBack y la propiedad isInAsyncPostBack de la clase PageRequestManager.

Colocar controles UpdateProgress en la página

Los controles UpdateProgress pueden estar dentro o fuera de otros controles UpdatePanel. La presentación de la plantilla del control UpdateProgress no depende de la posición del control UpdateProgress. En un control UpdatePanel anidado, hay un panel secundario dentro del panel primario. En ese caso, una devolución de datos que se origine dentro del panel secundario provocará que se muestren todos los controles UpdateProgress asociados a los paneles secundario y primario. Si una devolución de datos se origina en un control secundario inmediato del panel primario, sólo se muestran los controles UpdateProgress asociados al panel primario.

Personalizar cuándo se muestran los controles UpdateProgress

De forma predeterminada, el control UpdateProgress espera 0,5 segundos (500 milisegundos) antes de mostrar su contenido. Esto ayuda a evitar que el control parpadee si una devolución de datos asincrónica es muy rápida. Para especificar el retraso, establezca la propiedad DisplayAfter.

Si necesita mayor control sobre cuándo se muestra un control UpdateProgress, puede proporcionar el script de cliente de los eventos beginRequest y endRequest de la clase PageRequestManager. En el controlador de eventos beginRequest, puede mostrar el elemento de DOM que representa el control UpdateProgress. En el controlador de eventos endRequest, puede ocultarlo.

Debe proporcionar un script de cliente para mostrar un control UpdateProgress cuando se actualiza un UpdatePanel de destino en las circunstancias siguientes:

  • Cuando se registra una devolución de datos de un control como desencadenador de la devolución de datos asincrónica del panel y existe un control UpdateProgress en la página. Sin embargo, la propiedad AssociatedUpdatePanelID no se establece como Id. del panel.

  • Cuando las devoluciones de datos de los controles se registran como controles de devolución de datos asincrónica utilizando el método RegisterAsyncPostBackControl del control ScriptManager.

TopicLocation
Introducción al control UpdateProgressGenerar aplicaciones Web ASP .NET en Visual Studio
Información general sobre el control UpdatePanelGenerar aplicaciones Web ASP .NET en Visual Studio
Programar controles UpdateProgress en script de clienteGenerar aplicaciones Web ASP .NET en Visual Studio
Información general sobre el control UpdateProgressGenerar aplicaciones Web ASP .NET en Visual Studio
Introducción al control UpdateProgressGenerar aplicaciones Web ASP .NET en Visual Studio
Información general sobre el control UpdatePanelGenerar aplicaciones Web ASP .NET en Visual Studio
Programar controles UpdateProgress en script de clienteGenerar aplicaciones Web ASP .NET en Visual Studio
Información general sobre el control UpdateProgressGenerar aplicaciones Web ASP .NET en Visual Studio

En los ejemplos siguientes se muestran maneras diferentes de usar el control UpdateProgress para mostrar el progreso durante las devoluciones de datos asincrónicas.

En el ejemplo siguiente se muestra un control UpdateProgress que muestra el estado de progreso de dos controles UpdatePanel.

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    protected void Button_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>UpdateProgress Example</title>
    <style type="text/css">
    #UpdatePanel1, #UpdatePanel2, #UpdateProgress1 { 
      border-right: gray 1px solid; border-top: gray 1px solid; 
      border-left: gray 1px solid; border-bottom: gray 1px solid;
    }
    #UpdatePanel1, #UpdatePanel2 { 
      width:200px; height:200px; position: relative;
      float: left; margin-left: 10px; margin-top: 10px;
     }
     #UpdateProgress1 {
      width: 400px; background-color: #FFC080; 
      bottom: 0%; left: 0px; position: absolute;
     }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
    <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
    <%=DateTime.Now.ToString() %> <br />
    <asp:Button ID="Button1" runat="server" Text="Refresh Panel" OnClick="Button_Click" />    
    </ContentTemplate>
    </asp:UpdatePanel>
    <asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
    <%=DateTime.Now.ToString() %> <br />
    <asp:Button ID="Button2" runat="server" Text="Refresh Panel" OnClick="Button_Click"/>    
    </ContentTemplate>
    </asp:UpdatePanel>
    <asp:UpdateProgress ID="UpdateProgress1" runat="server">
    <ProgressTemplate>
      Update in progress...
    </ProgressTemplate>
    </asp:UpdateProgress>
    </div>
    </form>
</body>
</html>


En el ejemplo siguiente se muestran dos controles UpdateProgress. Cada control muestra el estado de progreso de un control UpdatePanel asociado.

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    protected void Button_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>UpdateProgress Example</title>
    <style type="text/css">
    #UpdatePanel1, #UpdatePanel2 { 
      width:200px; height:200px; position: relative;
      float: left; margin-left: 10px; margin-top: 10px;
      border-right: gray 1px solid; border-top: gray 1px solid; 
      border-left: gray 1px solid; border-bottom: gray 1px solid;
     }
     #UpdateProgress1, #UpdateProgress2 {
      width: 200px; background-color: #FFC080;
      position: absolute; bottom: 0px; left: 0px;
     }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
    <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
    <%=DateTime.Now.ToString() %> <br />
    <asp:Button ID="Button1" runat="server" Text="Refresh Panel" OnClick="Button_Click" />    
    <asp:UpdateProgress ID="UpdateProgress1" AssociatedUpdatePanelID="UpdatePanel1" runat="server">
    <ProgressTemplate>
      UpdatePanel1 updating...
    </ProgressTemplate>
    </asp:UpdateProgress>
    </ContentTemplate>
    </asp:UpdatePanel>
    <asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
    <%=DateTime.Now.ToString() %> <br />
    <asp:Button ID="Button2" runat="server" Text="Refresh Panel" OnClick="Button_Click"/>    
    <asp:UpdateProgress ID="UpdateProgress2" AssociatedUpdatePanelID="UpdatePanel2" runat="server">
    <ProgressTemplate>
      UpdatePanel2 updating...
    </ProgressTemplate>
    </asp:UpdateProgress>
    </ContentTemplate>
    </asp:UpdatePanel>
    </div>
    </form>
</body>
</html>


System.Object
  System.Web.UI.Control
    System.Web.UI.UpdateProgress

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft