2011-10-03 19 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 कॉल निष्पादित किया जाता है पृष्ठ लोड होने, मैं एक अद्यतन पैनल का उपयोग आंशिक पोस्टबैक करते हैं, जावास्क्रिप्ट पोस्ट के दौरान वापस निष्पादित नहीं कर रहा है कि यह कैसे सर्वर साइड से कॉल करने के लिए।पोस्टबैक

<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 का उपयोग करें; कुछ इस तरह:

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

window.onload काम नहीं करता।

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

बजाय का उपयोग करें।

2

आप एक समारोह के अंदर इस स्क्रिप्ट डाल सकता है:

function foo() { 
    ... 
} 

जो डोम लोड पर निष्पादित किया जाएगा:

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 के बजाय में अपने कोड डाल दिया। आप वहां से फ़ंक्शन को कॉल करने में सक्षम हो सकते हैं, लेकिन मैंने इसका परीक्षण नहीं किया है।