2011-10-03 16 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(); 
     }; 

La JavaScript viene eseguito al caricamento della pagina, mi fanno postback parziale utilizzando un pannello di aggiornamento, il javascript non viene eseguito durante il palo come chiamare dal lato server.chiamata JavaScript dal lato server su postback

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

Questo è quello che sto cercando e il grafico non è cambiato. rimane costante come nel caricamento della pagina

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(); 
     } 

risposta

5

Usa ScriptManager.RegisterStartupScript per chiamare una funzione javascript da un pannello di aggiornamento; qualcosa di simile:

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

window.onload non funziona dopo che la pagina è già caricato. Utilizzare

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

invece.

2

Si potrebbe mettere questo script all'interno di una funzione:

function foo() { 
    ... 
} 

che sarà eseguito su DOM carico:

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

e su lato postback server da un UpdatePanel:

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

Ho aggiornato il codice, puoi dirmi dove sto andando male – Mark

0

Si potrebbe anche fare

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

Basta inserire il codice nel posto del alert. Potresti essere in grado di chiamare la funzione da lì, ma non l'ho provato.

Problemi correlati