2010-11-23 5 views
1

J'ai un enfant UpdatePanel parent et enfant imbriqué. Le problème est que, lorsque l'UpdatePanel enfant est actualisé/posté, le UpdateProgress dans le parent se déclenche. Comment puis-je empêcher cela? La structure est comme ceci:Enfant UpdatePanel et parent Problème UpdateProgress

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
      <ContentTemplate> 

     <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1"> 
        <ProgressTemplate></ProgressTemplate> 
     </asp:UpdateProgress> 

     <asp:UpdateProgress ID="UpdateProgress2" runat="server" AssociatedUpdatePanelID="UpdatePanel1"> 
        <ProgressTemplate></ProgressTemplate> 
     </asp:UpdateProgress> 

     <asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional"> 
      <ContentTemplate> 
       <asp:UpdateProgress ID="UpdateProgress3" runat="server" AssociatedUpdatePanelID="UpdatePanel2"> 
            <ProgressTemplate></ProgressTemplate> 
           </asp:UpdateProgress> 
      </ContentTemplate> 
       </asp:UpdatePanel> 

     </ContentTemplate> 
</asp:UpdatePanel> 

Lorsque UpdatePanel2 est affiché, UpdateProgress3 n'est pas affiché mais UpdateProgress1 et UpdateProgress2 sont. Que devrais-je faire?

Répondre

1

La propriété UpdateMode de UpdatePanel1 est pas spécifié, de sorte que sa valeur par défaut à Always, ce qui signifie UpdatePanel1 sera rafraîchi lorsque tout autre UpdatePanel sur la page effectue une publication partielle.

Essayez spécifier UpdateMode="Conditional" dans tous vos UpdatePanels:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
</asp:UpdatePanel> 
+0

J'ai ajouté UpdateMode = "Conditionnel" au UpdatePanel1 mais c'est toujours le même, UpdateProgress1 et 2 affichés, pas 3 .. – dstr

1

On voit ici: http://www.asp.net/AJAX/Documentation/Live/overview/UpdateProgressOverview.aspx

Si un contrôle UpdatePanel se trouve dans un autre panneau de mise à jour, une publication qui provient à l'intérieur du panneau enfant provoque une UpdateProgress contrôles associés au panneau enfant à afficher. Il affiche également les contrôles UpdateProgress associés au panneau parent. Si une publication provient d'un contrôle enfant immédiat du panneau parent, seuls les contrôles UpdateProgress associés au panneau parent sont affichés. Cela suit la logique de la façon dont les publications sont déclenchées.

Alors, je pense que vous devez cacher la UpdateProgress mère clientside:

Vous pouvez contrôler par programme lorsqu'un contrôle UpdateProgress est affiché en utilisant le JavaScript BeginRequest et événements endRequest de la classe PageRequestManager. Dans le gestionnaire d'événements beginRequest, affichez l'élément DOM représentant le contrôle UpdateProgress. Dans le gestionnaire d'événements endRequest, masquez l'élément.