2009-05-21 50 views
0

問候!「預覽區」中的UpdatePanel不刷新

我有一個「代碼生成器」頁面,在這裏用戶可以選擇不同的單選按鈕,它生成的HTML標記(主要是SCRIPT標籤),他們可以利用他們的網頁上顯示的一些數據。還有一個「預覽」區域,以便他們在將代碼複製/粘貼到他們的網站之前可以看到結果。的形式存在於一個FormView控制,並通過一個UpdatePanel包裹像這樣:

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:FormView ID="FormView1" runat="server" DataSourceId="XmlDataSource1"> 
      <ItemTemplate> 
       <div id="configArea"> 
        <ul> 
         <li> 
          <%# XPath("Steps/Step1/ServerStatus") %><br /> 
          <asp:RadioButton ID="RadioButton1" runat="server" GroupName="OneA" Checked="true" AutoPostBack="true" Text='<%# XPath("Steps/Step1/YesOption") %>' /> 
          <asp:RadioButton ID="RadioButton2" runat="server" GroupName="OneA" AutoPostBack="true" Text='<%# XPath("Steps/Step1/NoOption") %>' /> 
         </li> 
         <li> 
          <%# XPath("Steps/Step1/Uptime") %><br /> 
          <asp:RadioButton ID="RadioButton3" runat="server" GroupName="OneB" Checked="true" AutoPostBack="true" Text='<%# XPath("Steps/Step1/YesOption") %>' /> 
          <asp:RadioButton ID="RadioButton4" runat="server" GroupName="OneB" AutoPostBack="true" Text='<%# XPath("Steps/Step1/NoOption") %>' /> 
         </li> 
         <li> 
          <%# XPath("Steps/Step1/IPAddress") %><br /> 
          <asp:RadioButton ID="RadioButton5" runat="server" GroupName="OneC" Checked="true" AutoPostBack="true" Text='<%# XPath("Steps/Step1/YesOption") %>' /> 
          <asp:RadioButton ID="RadioButton6" runat="server" GroupName="OneC" AutoPostBack="true" Text='<%# XPath("Steps/Step1/NoOption") %>' /> 
         </li> 
        </ul> 
       </div> 
       <div id="copyCode"> 
        <%# XPath("Steps/Step2/CopyPasteCode") %><br /> 
        <asp:TextBox ID="Textbox1" runat="server" TextMode="MultiLine" Width="300" Height="300" /> 
       </div> 
       <div id="previewArea"> 
        <%# XPath("Steps/Step3/PreviewTitle") %><br /> 
        <asp:Literal ID="Literal1" runat="server" /> 
       </div> 
      </ItemTemplate> 
     </asp:FormView> 
    </ContentTemplate> 
</asp:UpdatePanel> 
<asp:XmlDataSource ID="XmlDataSource1" runat="server" XPath="Root/Data" /> 

它成功地產生在copycode文本框的代碼(TextBox1中),其可以看起來像這樣:

<script src="http://example.com/src/Constants.js"></script> 
<script> 
    showIPAddress = 0; 
    DisplayServerStatus(); 
</script> 

同時,我使用複製代碼TextBox(TextBox1)中的文本更新「預覽」區域的文字控件(Literal1)。當不在UpdatePanel中時,預覽顯示得很完美,但是當它不工作時(並且我更喜歡使用UpdatePanel來防止頁面刷新)。我做的「預覽」區域和copycode文本的更新PreRender事件期間:

protected override void OnPreRender(EventArgs e) 
{ 
    base.OnPreRender(e); 

    UpdateCodeSnippetAndPreviewArea(); 
} 

任何想法,爲什麼當它在一個UpdatePanel預覽不更新?

回答

0

使用一個UpdatePanel當它不更新的原因是ASP .NET AJAX框架不處理由服務器返回的任何內嵌的JavaScript。看看在服務器端使用ScriptManager.RegisterStartUpScript方法來註冊嵌入式JavaScript的執行。基本上,您可以使用此方法在面板更新後啓動自定義JavaScript的執行。在您的情況下,您的自定義JavaScript將需要適當地解釋預覽腳本(即檢測腳本標記,動態註冊它們然後執行給定的功能)。

希望這會有所幫助!

Rohland

+0

我跟着直到最後一句。你能否詳細說明一下? – Bullines 2009-05-21 21:21:14