【问题标题】:Asp.net page life cycle error, [duplicate]Asp.net页面生命周期错误,[重复]
【发布时间】:2011-10-03 16:16:31
【问题描述】:

可能重复:
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>

【问题讨论】:

标签: asp.net ajax updatepanel page-lifecycle


【解决方案1】:

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

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

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

ClientScriptManager.RegisterStartupScript

【讨论】:

    【解决方案2】:

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

    • 开始请求
    • 结束请求
    • 初始化请求
    • 页面加载
    • 页面加载中

    我认为 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多