2011-10-03 87 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