2012-03-05 11 views
1

オープンイベント間のダイアログの内容をクリアできない理由を教えてください。 まず、以下に示すように、更新パネルを含む非常に単純なページがあります。メインフォームの唯一のものは、ダイアログを開くためのリンク(「クリックしてください」)です。
オープンイベントハンドラは、非同期ポストバックを実行します。コードビハインドイベントハンドラメソッド "btn_dialog"は、ダイアログのリテラル(litChart)に値を設定します。これはすべてうまくいく。私の問題は、閉じる(Xボタン)をクリックするとダイアログが正常に閉じられ、リテラル内のコンテンツがクリアされていないため、クローズ時に次のリンクをクリックしてダイアログを開くと思います私はそこに最初に置いたのと同じテキスト/コントロールを示しています。私が望むのは、ダイアログが閉じるたびに内容をクリアして、前の内容を想起させないことです。
$( "div#contentHolder")を使用しました。 $( "div#contentHolder")ダイアログ( "破棄")。その他様々な方法があります。私が考えているのは、セレクタがダイアログコンテンツを正しく参照していないということです。
私はJQueryの初心者です。ここからどこに行くのか分かりません。誰かが実績のあるコードで私を助けることができたら、本当に感謝しています。以下JQueryダイアログを閉じてコンテンツをクリアする方法

<asp:Content ID="Content1" ContentPlaceHolderID="cph_head" Runat="Server"> 

<script type="text/javascript" > 
    $(function() { 
     $("#dialog_detail").dialog({ autoOpen: false, width: 'auto', 
     open: function (event, ui) { __doPostBack('<%=btn_dialog.UniqueID %>', ''); }, 
     close: function (event, ui) { $("div#contentHolder").empty(); } 
     }); 
    }); 
</script> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="cph_main" Runat="Server"> 
    <asp:UpdatePanel ID="up_main" runat="server"> 
    <ContentTemplate>  
     <span onclick="$('#dialog_detail').dialog('open');">click me</span> 
    </ContentTemplate> 
    </asp:UpdatePanel> 
    <div id='dialog_detail'> 
     <asp:UpdatePanel ID="up_dialog" runat="server"> 
      <ContentTemplate> 
       <asp:UpdateProgress runat="server" ID="UpdateProgress1" 
        AssociatedUpdatePanelID="up_dialog"> 
        <ProgressTemplate> 
         <asp:Image ID="postbackAnimation" 
          ImageUrl="/dashboard/images/ajax-loader.gif" 
          AlternateText="Loading..." runat="server" /> 
        </ProgressTemplate> 
       </asp:UpdateProgress>  
       <div id="contentHolder" runat="server"> 
        <asp:Literal ID="litChart" runat="server"></asp:Literal> 
       </div> 
       <asp:Button ID="btn_dialog" runat="server" style="display:none;" /> 
      </ContentTemplate> 
      </asp:UpdatePanel> 
    </div> 
</asp:Content> 

その背後にあるコードは、この移入である:

はい、私はそれを試してみましたし、イベントがちょうど今再びそれを試してみましたが。その問題は、いったんダイアログが破棄されると、再度開くことができないということです。誰かがコードを試して結果を得ることができるかどうか確認してください。私はそう後ろにコードを持っている:

Protected Sub btn_dialog_Click(sender As Object, e As System.EventArgs) Handles btn_dialog.Click 

    litChart.Text = GetScript("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce") 

Sub End 

Private Function GetScript(ByVal comment As String) As String 
    Dim sb As New StringBuilder 


    sb.AppendLine("<p style='max-width: 500px; text-align: left;'>") 
    sb.AppendLine(comment) 
    sb.AppendLine("</p>") 
    Return sb.ToString 

End Function 

答えて

0

あなたはそれを

$("#dialog_detail").dialog({ autoOpen: false, width: 'auto', 
    open: function (event, ui) { __doPostBack('<%=btn_dialog.UniqueID %>', ''); }, 
    close: function (event, ui) { $("#dialog_detail").dialog("destroy"); } 
    }); 
+0

を破壊する必要がありますはい、破壊の問題はあなたがもはやダイアログを再度開くことができないということです。 –

+0

@RomelEvansもちろんもちろん再初期化する必要があります –

+0

私はそれを理解しましたが、コードに示されているように既に初期化されているときはどうしますか? –

関連する問題