UpdateProgress, classe
TOC
Réduire la table des matières
Développer la table des matières

UpdateProgress, classe

Mise à jour : novembre 2007

Fournit une rétroaction visuelle dans le navigateur lorsque le contenu d'un ou plusieurs contrôles UpdatePanel est mis à jour.

Espace de noms :  System.Web.UI
Assembly :  System.Web.Extensions (dans 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 />

Le contrôle UpdateProgress vous permet de fournir des commentaires à propos de la progression de restitution de page partielle. Pour les publications (postback) ou restitutions de page initiale, le contenu du contrôle UpdateProgress n'est pas affiché.

La page peut contenir plusieurs contrôles UpdateProgress. Chacun peut être associé à un contrôle UpdatePanel différent. Vous pouvez également utiliser un contrôle UpdateProgress et l'associer à tous les contrôles UpdatePanel sur la page.

Le contrôle UpdateProgress restitue un élément div qui est affiché ou masqué selon l'origine de la publication (postback) et selon que la propriété AssociatedUpdatePanelID du contrôle UpdateProgress est définie.

Association d'un UpdateProgress à un contrôle UpdatePanel

Pour associer des contrôles UpdateProgress à un contrôle UpdatePanel, définissez la propriété AssociatedUpdatePanelID du contrôle UpdateProgress. Lorsqu'un événement de publication (postback) provient de l'intérieur d'un contrôle UpdatePanel, tout contrôle UpdateProgress associé est affiché. Si vous ne définissez pas la propriété AssociatedUpdatePanelID, le contrôle UpdateProgress affiche la progression de toute publication (postback) asynchrone dont l'origine est à l'intérieur d'un contrôle UpdatePanel. Il est également affiché pour tous les contrôles qui sont des déclencheurs pour les panneaux.

La propriété AssociatedUpdatePanelID a l'effet suivant sur le comportement du contrôle UpdateProgress :

  • Lorsque la propriété AssociatedUpdatePanelID n'est pas définie, le contrôle UpdateProgress est affiché pour les publications (postbacks) suivantes :

    • Publications (postbacks) dont l'origine est à l'intérieur d'un contrôle UpdatePanel.

    • Publications (postbacks) dont l'origine provient de contrôles qui sont des déclencheurs asynchrones pour un contrôle UpdatePanel.

  • Lorsque la propriété AssociatedUpdatePanelID a pour valeur un ID du contrôle UpdatePanel, le contrôle UpdateProgress est affiché pour les publications (postback) dont l'origine est à l'intérieur du contrôle UpdatePanel associé.

Si la propriété AssociatedUpdatePanelID a pour valeur un contrôle qui n'existe pas, le contrôle UpdateProgress n'est jamais montré.

Si la propriété ChildrenAsTriggers du contrôle UpdatePanel a la valeur false et si une publication (postback) a pour origine l'intérieur d'un contrôle UpdatePanel, un contrôle UpdateProgress associé est affiché.

Spécification du contenu du contrôle UpdateProgress

Utilisez la propriété ProgressTemplate pour spécifier le message affiché par un contrôle UpdateProgress. Si la propriété ProgressTemplate est vide, rien n'est affiché lorsque le contrôle UpdateProgress est affiché.

Le modèle peut contenir du langage HTML et balise. Par exemple, vous pouvez afficher une image animée qui notifie l'utilisateur que le processus de publication (postback) est en cours. Vous pouvez également afficher un bouton sur lequel l'utilisateur peut cliquer pour arrêter la mise à jour de page partielle. En outre, vous pourriez envisager d'empêcher toutes les autres publications (postbacks) lorsqu'il y en a une en cours. L'exemple suivant affiche le script client que vous pouvez utiliser pour accomplir ces tâches.

<%@ 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>


Vous pouvez utiliser l'exemple de code en affectant « AbortPostBack () » à l'attribut onClick d'un contrôle HtmlButton. Pour plus d'informations, consultez la méthode abortPostBack et la propriété isInAsyncPostBack de la classe PageRequestManager.

Placement de contrôles UpdateProgress sur la page

Les contrôles UpdateProgress peuvent être à l'intérieur ou à l'extérieur d'autres contrôles UpdatePanel. L'affichage du modèle de contrôle UpdateProgress ne dépend pas de l'emplacement du contrôle UpdateProgress. Dans un contrôle UpdatePanel imbriqué, un panneau enfant se trouve à l'intérieur d'un panneau parent. Dans ce cas, une publication (postback) qui a pour origine l'intérieur du panneau enfant entraîne l'affichage de tous les contrôles UpdateProgress associés au panneau enfant et au panneau parent. Si une publication (postback) provient d'un contrôle enfant immédiat du panneau parent, seuls les contrôles UpdateProgress associés au panneau parent sont affichés.

Personnalisation lorsque les contrôles UpdateProgress sont affichés

Par défaut, le contrôle UpdateProgress attend 0,5 secondes (500 millisecondes) avant d'afficher son contenu. Ceci permet d'éviter le clignotement du contrôle en cas de publication (postback) asynchrone très rapide. Vous pouvez spécifier le délai en définissant la propriété DisplayAfter.

Si vous avez besoin d'un contrôle plus fin lorsqu'un contrôle UpdateProgress est affiché, vous pouvez fournir le script client pour les événements beginRequest et endRequest de la classe PageRequestManager. Dans le gestionnaire d'événements beginRequest, vous pouvez afficher l'élément DOM qui représente le contrôle UpdateProgress. Vous pouvez le masquer dans le gestionnaire d'événements endRequest.

Vous devez fournir le script client pour afficher un contrôle UpdateProgress lorsqu'un contrôle UpdatePanel cible est mis à jour dans les circonstances suivantes :

  • Lorsqu'une publication (postback) à partir d'un contrôle est inscrite comme déclencheur de publication asynchrone pour le panneau et qu'il y a un contrôle UpdateProgress sur la page. Toutefois, la propriété AssociatedUpdatePanelID n'est pas définie sur l'ID du panneau.

  • Lorsque les publications (postbacks) de contrôles sont enregistrées comme contrôles de publications asynchrones à l'aide de la méthode RegisterAsyncPostBackControl du contrôle ScriptManager.

TopicLocation
Introduction au contrôle UpdateProgressGénération d'applications Web ASP.NET dans Visual Studio
Vue d'ensemble du contrôle UpdatePanelGénération d'applications Web ASP.NET dans Visual Studio
Programmation de contrôles UpdateProgress dans un script clientGénération d'applications Web ASP.NET dans Visual Studio
Introduction au contrôle UpdateProgressGénération d'applications Web ASP.NET dans Visual Studio
Vue d'ensemble du contrôle UpdatePanelGénération d'applications Web ASP.NET dans Visual Studio
Programmation de contrôles UpdateProgress dans un script clientGénération d'applications Web ASP.NET dans Visual Studio
Vue d'ensemble du contrôle UpdateProgressGénération d'applications Web ASP.NET dans Visual Studio
Vue d'ensemble du contrôle UpdateProgressGénération d'applications Web ASP.NET dans Visual Studio

Les exemples suivants montrent différentes façons d'utiliser UpdateProgress pour afficher la progression pendant des publications (postbacks) asynchrones.

L'exemple suivant montre un contrôle UpdateProgress qui affiche l'état de progression pour deux contrôles 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>


Cet exemple montre deux contrôles UpdateProgress. Chaque contrôle affiche l'état de progression pour un contrôle UpdatePanel associé.

<%@ 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

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows Vista, Windows XP SP2, Windows Server 2003

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5

Ajouts de la communauté

AJOUTER
Afficher:
© 2016 Microsoft