2009-05-04 7 views
0

J'utilise AJAX.Net (3.5) dans un usercontrol. Le contrôle usercontrol contient un UpdatePanel, et dans le UpdatePanelthere est un MultiView. ScriptManager est inclus dans la page qui sert de conteneur pour usercontrol.AJAX.Net - UpdatePanel ne supprime pas l'ancien contenu

Pour passer d'une vue à l'autre, la commande usercontrol contient un simple bouton. Lorsque je clique dessus, la vue est modifiée afin que l'ancien contenu soit masqué et que le nouveau contenu s'affiche. Mon problème est que le contenu n'est pas caché du tout. La vue change et le nouveau contenu est affiché, mais l'ancien reste sur la page. Pour isoler le problème, j'ai essayé de changer le multiview et de changer la visibilité d'une étiquette simple, mais le comportement est le même. Des idées?

+0

Quelle méthode utilisez-vous pour basculer la visibilité? – Daniel

Répondre

0

Il semble que AJAX.Net ne fonctionne pas très bien si vous avez une partie de une table en dehors du UpdatePanel.

Sur mon contrôle, je veux afficher ou masquer certaines lignes d'une table. Je n'ai inclus que les balises tr et td dans le panneau de mise à jour.

Pour reproduire le problème:

<table> 
<asp:UpdatePanel ID="UpdatePanel" runat="server"> 
    <ContentTemplate> 
     <tr> 
      <td> 
       <asp:Label ID="lblToShow" runat="server" Text="Label to show" Visible="false" /> 
       <br /> 
       <asp:Label ID="lblToHide" runat="server" Text="Label to hide" /> 
      </td> 
     </tr> 
    </ContentTemplate> 
</asp:UpdatePanel> 
</table> 

Si vous changez la visibilité à l'aide:

lblToShow.Visible = true; 
lblToHide.Visible = false; 

Le texte des deux étiquettes sont indiquées sur la page (lblToHide ne cache pas)

Si vous déplacez le tableau étiquettes à l'intérieur de le UpdatePanel tout fonctionne très bien.

+0

Le UpdatePanel ne rend pas un div au navigateur? Si oui, cela pourrait expliquer le problème que vous voyez. –

+0

Oui. Chaque UpdatePanel rend à l'intérieur d'un div :( – nicoruy

0

appel

updatepanel.Update() 

après avoir apporté les modifications apportées à votre UpdatePanel

ou essayez

updatepanel.Controls.Clear(); 
+0

updatepanel.Update(); ne résout pas le problème. updatepanel.Controls.Clear(); supprime le nouveau contenu avant qu'il ne soit affiché, mais l'ancien contenu reste où il était (la page ne change pas) – nicoruy

+0

pouvez-vous donner votre source ici – DaDa

1

oh je comprends. Tout va bien alors. Le problème n'est pas d'Ajax ici. C'est juste que vous ne pouvez pas intégrer quelque chose dans les tags <table>. Dans ce cas, vous pouvez essayer quelque chose de différent du contrôle <table>. Peut-être un <div> ou autre chose. Je ne sais pas exactement quel genre de situation vous avez. Peut-être que vous expliquez le résultat que vous voulez obtenir pour que je puisse vous donner quelques conseils.

Cordialement

+0

Sur mon vrai code j'ai un MultiView à l'intérieur de la table J'utilise différentes vues pour changer les lignes sur la table Lorsque je change la vue, je veux voir les nouvelles lignes et masquer les anciens. Si j'inclus la table dans le UpdatePanel tout fonctionne bien (la table entière est mise à jour je pense) – nicoruy

Questions connexes