2009-05-21 55 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