2012-03-05 85 views
1

我希望有人能夠啓發我爲什麼我無法清除不同打開事件之間的對話內容。 首先,我有一個非常簡單的頁面,其中包含更新面板,如下所示。主窗體中唯一的一個是鏈接(「點擊我」)來調用對話框打開。
打開的事件處理程序執行異步回發。事件處理程序方法「btn_dialog」後面的代碼使用隨後顯示的值填充對話框的文字(「litChart」)。這一切都很好。我的問題是,當我點擊關閉(X按鈕),關閉對話框就好了,文字中的內容沒有被清除,因爲我認爲它會在關閉時出現,下次單擊鏈接打開對話框時顯示了我第一次放在那裏的相同文本/控件。我想要的是每次對話框關閉時都清除內容,因此它沒有回憶以前的內容。我用$(「div#contentHolder」)。empty();和$(「div#contentHolder」)。dialog(「destroy」)。empty();和其他各種方式。我認爲正在發生的事情是選擇器沒有正確引用對話內容。
我是一個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

是的,破壞的問題是,你不能重新打開的對話框中的任何更長的時間。 – 2012-03-05 13:51:38

+0

@RomelEvans當然,你必須重新初始化它 – 2012-03-05 13:53:48

+0

我想到了,但是如果代碼中已經初始化,你會怎麼做呢? – 2012-03-05 14:00:16