2009-05-04 14 views
0

私はusercontrolの中でAJAX.Net(3.5)を使用しています。 usercontrolにはUpdatePanelが含まれ、UpdatePanelthere内にはMultiViewがあります。 ScriptManagerは、usercontrolのコンテナとして機能するページに含まれています。AJAX.Net - UpdatePanelは古いコンテンツを削除しません

ビューを切り替えるには、ユーザーコントロールに単純なボタンが含まれている必要があります。 これをクリックすると、古いコンテンツが非表示になり、新しいコンテンツが表示されるように、ビューが変更されます。 私の問題は、コンテンツがまったく隠されていないことです。 ビューが変更され、新しいコンテンツが表示されますが、古いコンテンツはページに残ります。 問題を特定するために、単純なラベルのマルチビューと切り替えの表示を変更しようとしましたが、動作は同じです。 アイデア

+0

どのような方法で可視性を切り替えるのですか? – Daniel

答えて

0

してみてくださいUpdatePanelの外側にあるテーブル。

私のコントロールでは、テーブルの一部の行を表示または非表示にしたいと考えています。私はtrtdタグのみをupdatepanelの中​​に含めました。あなたが使用して可視性を変更した場合

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

:問題を再現するには

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

の両方のラベルのテキストがページに表示されます(lblToHideが非表示になりません)

テーブルをタグの中に移動すると、UpdatePanelがすべて正常に動作します。

+0

UpdatePanelはブラウザにdivをレンダリングしませんか?もしそうなら、それはあなたが見ている問題を説明するかもしれません。 –

+0

はい。すべてのUpdatePanelはdiv内にレンダリングします: – nicoruy

0

コール

updatepanel.Update() 

あなたのUpdatePanelに変更を加えた後

またはあなたがの一部を持っている場合AJAX.Netは非常にうまく機能していないようだ

updatepanel.Controls.Clear(); 
+0

updatepanel.Update();問題を解決しません。 updatepanel.Controls.Clear();新しいコンテンツが表示される前に削除されますが、古いコンテンツはそのまま残ります(ページは変更されません) – nicoruy

+0

ここにあなたのソースを指定できます – DaDa

1

わかりました。それは大丈夫です。この問題はAjaxの問題ではありません。ただ<table>タグに何かを埋め込むことはできません。この場合、<table>コントロールとは異なるものを試すことができます。多分<div>または何か他のもの。あなたはどんな状況にいるのか正確には分かりません。あなたが達成したい結果を説明するかもしれないので、私はあなたにいくつかの助言を与えることができます。

ありがとうございます

+0

私の実際のコードでは、テーブル内にMultiViewがあります ビューを変更すると、ビューを変更するときに新しい行と非表示を表示したい古いもの。 UpdatePanelの中​​にテーブルを含めると、すべて正常に動作します(テーブル全体が更新されると思います) – nicoruy

関連する問題