2010-07-28 81 views
0

我有一些JavaScript,我正在向UpdatePanel内的文字控件写出来。我已经设置它每15秒提醒当前时间,但我总是得到原来的时间。当我使用Firebug时,我可以看到脚本正在更新。这是因为它的部分页面刷新?我该如何阻止这种情况发生。我已经添加了OutputCache指令来尝试停止缓存,以查看是否存在问题,但这没有任何区别。Javascript更新问题。 ASP.net UpdatePanel

这是代码示例。前端:

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<asp:UpdatePanel ID="updTest" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
     <script type="text/javascript"> 
      function initScript(){ 
      <asp:literal id="litUpdateScript" runat="server" /> 
      } 
     </script> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger EventName="Tick" ControlID="panelRefresh" /> 
    </Triggers> 
</asp:UpdatePanel> 
<asp:Timer ID="panelRefresh" Interval="15000" runat="server"></asp:Timer> 

代码背后:

Protected Sub panelRefresh_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles panelRefresh.Tick 
    Me.litUpdateScript.Text = "alert('" & Now.ToString() & "');" 
End Sub 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Me.litUpdateScript.Text = "alert('" & Now.ToString() & "');" 
    Dim script As String = "initScript();" 
    ScriptManager.RegisterStartupScript(updTest, updTest.GetType(), "Myscript", script, True) 
End Sub 

这会导致页面加载正确的时间,但是,计时器刷新不会改变。虽然我可以看到脚本在萤火虫中变化。

+0

请发送代码。 – TheGeekYouNeed 2010-07-28 13:51:23

+0

没有看到你的代码就看不到你的代码,但是在JS中人们常常设置处理程序而忽略闭包,所以变量被实例化,函数在定义处理程序时调用,而不是在运行时调用。 – 2010-07-28 14:41:43

回答

0

我有一个猜测,我承认并没有真正尝试这个,但已与JavaScript和更新面板相当多。

我想你应该尝试在tick中注册事件而不是page_load。更多的东西是这样的:

Protected Sub panelRefresh_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles panelRefresh.Tick 
    Me.litUpdateScript.Text = "alert('" & Now.ToString() & "');" 
    Dim script As String = "initScript();"  
    ScriptManager.RegisterStartupScript(this.updatePanel, typeof(string), "alertScript", "alert('Error Message');", true); 
End Sub 

将在谷歌四处寻找我没有说,人们曾与page_loads问题,但让他们在其他赛事工作。值得一试,让我知道。

+0

没有没有解决。同样的问题。看起来它应该仍然在Firebug中工作。 – fizzer 2010-07-29 08:58:49