2011-10-03 68 views
5
var r = { 
     init : function(){ 
      r = Raphael("pie"); 
      //r.g.txtattr.font = "12px 'Fontin Sans', Fontin-Sans, sans-serif"; 
      r.g.text(320, -330, "Message Status").attr({ "font-size": 20 }); 

      var pie = r.g.piechart(360, -180, 100, <%= Session["uStats"] %>, { legend: [<%= Session["vkeyColor"] %>], colors: [<%= Session["vPieColor"] %>] }); 
      pie.hover(function() { 
       this.sector.stop(); 
       this.sector.scale(1.1, 1.1, this.cx, this.cy); 
       if (this.label) { 
        this.label[0].stop(); 
        this.label[0].scale(1.5); 
        this.label[1].attr({ "font-weight": 800 }); 
       } 
      }, function() { 
       this.sector.animate({ scale: [1, 1, this.cx, this.cy] }, 500, "bounce"); 
       if (this.label) { 
        this.label[0].animate({ scale: 1 }, 500, "bounce"); 
        this.label[1].attr({ "font-weight": 400 }); 
       } 
      }); 
      var r = Raphael("pie"), 

        data2 = [<%= Session["vProgressPercentage"] %>]; 
        axisx = ["10%", "20%"]; 
      r.g.txtattr.font = "12px 'Fontin Sans', Fontin-Sans, sans-serif"; 
      r.g.barchart(80, 25, 100, 320, data2, { stacked: true, colors: [<%= Session["vProgressColor"] %>,'#fff'] }); 
      axis2 = r.g.axis(94, 325, 280, 0, 100, 10, 1); 
     } 
     } 
      window.onload = function() { 
      r.init(); 
     }; 

當頁面加載執行Javascript時,我使用更新面板部分回發,在回發期間不執行JavaScript如何從服務器端調用它。打電話從服務器端回發

<asp:ScriptManager ID="smCharts" runat="server" /> 
    <script type="text/javascript" language="javascript"> 
      Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler); 
      Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
      function BeginRequestHandler(sender, args) { 
       r.init(); 
      } 
      function EndRequestHandler(sender, args) { 
       r.init(); 
      } 

      </script> 
     <asp:UpdatePanel runat="server" ID="Holder" OnLoad="messsagePercentStats" UpdateMode="Conditional"> 
      <ContentTemplate> 

       <div id="pie" onclick="__doPostBack('Holder', '');" style="top: -125px; left: -20px; width: 610px; position: relative; 
        height: 389px;"> 
       </div> 

這是我正在嘗試和圖形沒有改變。它在頁面加載時保持不變

protected void Timer_Tick(object sender, EventArgs args) 
    { 
     String MsgID = HttpContext.Current.Request.QueryString["MsgID"]; 
     int msgID = Convert.ToInt32(MsgID); 
     BindGridViewUsers(msgID); 

     ClientScript.RegisterStartupScript(this.GetType(), "loadpie", "r.init();"); 
     Holder.Update(); 
     } 

回答

5

使用ScriptManager.RegisterStartupScript從更新面板調用JavaScript函數;是這樣的:

ScriptManager.RegisterStartupScript(this,this.GetType(),"key","javscriptfunction();" , false); 
0

window.onload在頁面已經加載後不起作用。使用

$(function(){ r.init();})

改爲。

2

你可以把這個腳本函數內部:

function foo() { 
    ... 
} 

這將在DOM加載執行:

window.onload = function() { 
    foo(); 
}; 

,並在服務器端回發從一個UpdatePanel:

ScriptManager.RegisterStartupScript(this, this.GetType(), "foo", "foo();", true); 
+0

我已經更新了代碼,你能說我哪裏錯了嗎 – Mark

0

你也可以做

Response.Write("<script language='javascript'>alert('I'm an alert');</script>"); 

只要把你的代碼,而不是alert。您可能可以從那裏調用該函數,但我沒有測試過。