2010-09-22 7 views
0

Ma page de contenuBesoin d'aide avec UpdatePanel

<asp:updatePanel id="Panel1" runat="server" Visible="true"> 
     <ContentTemplate> 
       <div> 
        blah blah 
       </div> 
      </ContentTemplate> 
    </asp:updatePanel> 

    <asp:updatePanel id="Panel2" runat="server" Visible="false"> 
     <ContentTemplate> 
       <div> 
        yada yada 
       </div> 
      </ContentTemplate> 
    </asp:updatePanel>  

fichier code ..Le code suivant à la fin du bouton Soumettre événement click: -

  Panel1.Visible = false; 
      Panel2.Visible = true; 

maintenant plus tôt, j'étais en utilisant asp: Panel .. alors il fonctionnait bien..comme Panel 1 se cacherait et Panel 2 apparaîtrait à la place ... c'était APRÈS j'ai changé asp: Panel en asp: updatePanel que les choses se sont foutillées ... maintenant le Submit le bouton ne fonctionnera tout simplement pas !!

Qu'est-ce qui a mal tourné soudainement? Je l'ai changé à updatePanel donc la page ne rafraîchit pas .. n'est-ce pas comment nous mettons en œuvre cette chose?

 <asp:updatePanel id="Panel1" runat="server"> 
      <ContentTemplate> 
      <div> 
    <p> 
     Type ur name 

       <asp:TextBox ID="name" runat="server"> 
       </asp:TextBox> 
     </p> 


     <asp:Button ID="btn" OnClick="btn_Click" runat="server" 
     Text="Submit" /> 
    </div> 

    </ContentTemplate> 
      </asp:updatePanel> 


    <asp:updatePanel id="Panel2" runat="server" Visible="false"> 
    <ContentTemplate> 
    <div> 
     Thank You! 

    </div> 
    </ContentTemplate> 
    </asp:updatePanel> 
+0

"n'est-ce pas la façon dont nous mettons en œuvre cette chose" - si vous le comprenez, oui. Ma conjecture est que votre bouton n'est pas dans le UpdatePanel. – RPM1984

+0

vous ne pouvez pas par programme "cacher" un UpdatePanel comme ça. parce que le UpdatePanel est le "conteneur" qui déclenche la publication, et que vous essayez de "se cacher" quand il publie? Cela n'a pas de sens si vous y réfléchissez. Repensez votre solution - qu'essayez-vous de faire? – RPM1984

+0

Je viens de revérifier .. Il est à l'intérieur de updatePanel seulement – Serenity

Répondre

1

Si vous définissez Visible="false" sur un UpdatePanel, il ne sera pas rendu au client du tout. Par conséquent, si vous effectuez une publication Ajax, le client ne sera pas en mesure de rendre le UpdatePanel invisible visible, car il n'est tout simplement pas là. Considérez simplement UpdatePanels comme des marqueurs, en indiquant les bits de votre page que vous souhaitez mettre à jour lors d'une publication Ajax. Pour votre scénario, je pense que la solution la plus simple serait d'utiliser tous les deux UpdatePanels et panneaux. De plus, parce que les deux choses que vous êtes mise à jour (les deux panneaux) sont juste à côté de l'autre, il n'y a pas besoin de deux UpdatePanels distincts:

<asp:updatePanel id="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
    <asp:Panel id="Panel1" Visible="true" runat="server"> 
     blah blah 
    </asp:Panel> 
    <asp:Panel id="Panel2" Visible="false" runat="server"> 
     yada yada 
    </asp:Panel> 
    </ContentTemplate> 
</asp:updatePanel> 

Puis dans le code-behind, modifiez la propriété Visible sur la Panel contrôles.

+0

attente lemme essayer tout de suite .. Je thot ce soit en utilisant les deux panneaux – Serenity

-1

Je ne sais pas où votre bouton Soumettre est, mais peut-être essayer de mettre à jour ces panneaux avec:

Panel1.Update(); 
Panel2.Update(); 
+0

Cela ne marchera pas - parce que les propriétés UpdateMode et ChildrenAsTriggers n'ont pas été définis, ils seront les paramètres par défaut, et donc les deux UpdatePanels seront déjà mis à jour sur chaque publication Ajax. La raison pour laquelle le UpdatePanel invisible n'est pas mis à jour est parce qu'il n'est pas sur le client en premier lieu. –

2

À http://msdn.microsoft.com/en-us/magazine/cc163413.aspx#S3, vous pouvez lire

UpdatePanels multiples

Une page peut héberger plusieurs UpdatePanels. Par défaut, lorsqu'un UpdatePanel sur une page est mis à jour, les autres UpdatePanels de la page sont également mis à jour. Parfois, c'est ce que vous voulez, mais le plus souvent, vous n'avez pas besoin de chaque mise à jour UpdatePanel en réponse à d'autres UpdatePanels. Vous pouvez sélectionner les instances de UpdatePanel à mettre à jour (et quand) en définissant la propriété UpdateMode de chaque contrôle UpdatePanel de la page sur "Conditionnel". Ensuite, lorsqu'un UpdatePanel met à jour et appelle un gestionnaire d'événements côté serveur, appelez UpdatePanel.Update sur les autres panneaux que vous souhaitez mettre à jour. Cela réduit la charge sur le serveur en réduisant le nombre de contrôles qui rendent et réduit le volume de données dans la réponse parce que les UpdatePanels qui ne se mettent pas à jour n'ajoutent rien à la réponse.