2011-10-03 100 views
0

可能重复:
how to call a javascript fn in Update panel on Partial postback in asp.netAsp.net页面生命周期错误,

更新面板做局部后回来,我有一个Timer_Tick方法,其中我所说的方法做数据绑定和updatepanel onLoad进行图形的一些计算。我使用JavaScript来 绘制图形

window.onload = function() { 
     r.init(); 
    }; 

SO页面加载时,当在4秒后更新面板的更新r.init不叫则显示图。我尝试了很多东西。该图消失。 有人可以给我一个如何在页面部分回发后执行JavaScript的例子。

<asp:UpdatePanel runat="server" ID="Holder" OnLoad="Graphstats" UpdateMode="Always" ChildrenAsTriggers="True"> 
       <ContentTemplate> 
... 
        <asp:Timer ID="Timer1" runat="server" Interval="3000" OnTick="Timer_Tick" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
+0

这几乎是相同的:http://stackoverflow.com/questions/7636904/how-to-call-a-javascript-fn-in-update-panel-on-partial-回传功能于ASP网 –

回答

0

我相信在Timer_Tick中,您需要设置它以在使用RegisterStartupScript呈现时再次调用该脚本。

string script = "<script type=text/javascript>r.init();</"; 
script+= "script>"; 

Page.ClientScript.RegisterStartupScript(this.GetType(), "GraphInit", script); 

ClientScriptManager.RegisterStartupScript

0

您的网站有一个asp:ScriptManager的。该控件与Javascript中的PageRequestManager对象进行通信。你可以用你的代码钩入更新面板的所有通信。

  • 的BeginRequest
  • endRequest
  • initializeRequest
  • pageLoaded
  • pageLoading

我觉得pageLoaded是最适合你的方法。

<script type="text/javascript"> 
window.onload = function() { 
    // PageLoad for sync only 
    r.init(); 
}; 

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function(sender, args) { 
    // PageLoad for sync and async! 
    r.init(); 
}); 
</script> 

您可以扩展代码以检查哪个控件导致该帖子以优化您的代码。

MSDN:Sys.WebForms.PageRequestManager