2009-05-04 10 views
0

Ich benutze AJAX.Net (3.5) innerhalb einer Benutzersteuerung. Das Benutzersteuerelement enthält ein UpdatePanel, und innerhalb des UpdatePanels befindet sich ein MultiView. Der ScriptManager ist in der Seite enthalten, die als Container für die Benutzersteuerung dient.AJAX.Net - UpdatePanel löscht keinen alten Inhalt

Um zwischen den Ansichten zu wechseln, enthält das usercontrol eine einfache Schaltfläche. Wenn ich darauf klicke, wird die Ansicht geändert, so dass der alte Inhalt ausgeblendet und neuer Inhalt angezeigt wird. Mein Problem ist, dass der Inhalt überhaupt nicht versteckt ist. Die Ansicht ändert sich und der neue Inhalt wird angezeigt, aber der alte bleibt auf der Seite. Um das Problem zu isolieren, habe ich versucht, die Multiview- und Umschalt-Sichtbarkeit einer einfachen Beschriftung zu ändern, aber das Verhalten ist das gleiche. Irgendwelche Ideen?

+0

Mit welcher Methode wechseln Sie die Sichtbarkeit? – Daniel

Antwort

0

Es scheint, dass AJAX.Net nicht sehr gut funktionieren, wenn Sie einen Teil haben eine Tabelle außerhalb des UpdatePanels.

Auf meiner Steuerung möchte ich einige Zeilen einer Tabelle anzeigen oder ausblenden. Ich habe nur die tr und td Tags im Updatepanel enthalten.

das Problem zu reproduzieren:

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

Wenn Sie die Sichtbarkeit ändern verwenden: sind

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

Der Text der beiden Etiketten auf der Seite angezeigt (lblToHide nicht verstecken)

Wenn Sie die Tabelle Tags innerhalb das UpdatePanel bewegen, funktioniert alles gut.

+0

Rendert das UpdatePanel ein Div nicht zum Browser? Wenn ja, könnte das das Problem erklären, das Sie sehen. –

+0

Ja. Jedes UpdatePanel rendert innerhalb eines div :( – nicoruy

0

Anruf

updatepanel.Update() 

, nachdem Sie die Änderungen an Ihrem Update machen

oder versuchen

updatepanel.Controls.Clear(); 
+0

updatepanel.Update(); löst das Problem nicht. updatepanel.Controls.Clear(); löscht den neuen Inhalt, bevor er angezeigt wird, aber der alte Inhalt bleibt wo er war (die Seite ändert sich nicht) – nicoruy

+0

können Sie Ihre Quelle hier angeben – DaDa

1

oh ich verstehe. Es ist alles in Ordnung. Das Problem ist hier nicht von Ajax. Es ist nur, dass Sie nicht etwas in <table> Tags einbetten können. In diesem Fall können Sie etwas anderes als das Steuerelement <table> versuchen. Vielleicht eine <div> oder etwas anderes. Ich weiß nicht genau, was für eine Situation du hast. Vielleicht erklären Sie das Ergebnis, das Sie erreichen möchten, damit ich Ihnen einen Rat geben kann.

Mit freundlichen Grüßen

+0

Auf meinem wirklichen Code habe ich ein MultiView innerhalb der Tabelle. Ich benutze verschiedene Ansichten, um die Reihen auf der Tabelle zu ändern. Wenn ich die Ansicht ändere, möchte ich die neuen Reihen sehen und mich verstecken die Alten. Wenn ich die Tabelle in das UpdatePanel einfüge funktioniert alles gut (die gesamte Tabelle wird aktualisiert, denke ich) – nicoruy