Asp.net页面生命周期错误,

时间:2011-10-03 16:16:31

标签: asp.net ajax updatepanel page-lifecycle

  

可能重复:
  how to call a javascript fn in Update panel on Partial postback in asp.net

更新面板正在进行部分回发,我有一个Timer_Tick方法,我调用该方法进行数据绑定,并使用updatepanel onLoad进行图形计算。我用的是Javascript             绘制图表

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

因此,当页面加载时会显示图形,当更新面板在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>

2 个答案:

答案 0 :(得分:0)

我相信在Timer_Tick中,你需要将它设置为在使用RegisterStartupScript渲染时再次调用该脚本。

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

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

ClientScriptManager.RegisterStartupScript

答案 1 :(得分:0)

您的网站有一个asp:ScriptManager。此控件与Javascript中的PageRequestManager对象进行通信。您可以使用您的代码连接到updatepanel的所有通信。

  • 的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