2013-11-26 8 views
1

나는 매 2 초마다 틱하는 Timer를 가지고 있고 끊임없이 변화하는 백분율 값을 얻습니다. 이것은 라벨에 표시 될 때 잘 동작합니다. 같은 일을하고 싶지만 javascript를 사용하여 메시지 상자에 표시하려면 처음에는이 표시가 좋지만 값이 변경되면 알림 팝업의 값은 동일하게 유지됩니다.자바 스크립트가 작동하지 않습니다.

protected void TimerProgress_Tick(object sender, EventArgs e) 
    {   
     percent = max_time.PercentGoalMetToday(i.ToString()); 
     lbPercent.Text = percent; //WORKS 
     JavaScriptMethod(); 
    } 

    protected void JavaScriptMethod() 
    { 
     StringBuilder sb = new StringBuilder(); 
     sb.Append("<script type = 'text/javascript'>"); 
     sb.Append("function main(){"); 
     sb.Append("alert('"); 
     sb.Append(percent); 
     sb.Append("')};"); 
     sb.Append("var myVar = setInterval(function() { main() }, 4000);"); 
     sb.Append("</script>"); 
     ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString()); 
    } 

ASPX

<asp:UpdatePanel ID="UpdatePanelProgressBar" runat="server"> 
    <ContentTemplate> 
      <asp:Label ID="lblPercent" runat="server" Text="" CssClass="Percent"></asp:Label> 
    </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="Timer" /> 
     </Triggers> 
    </asp:UpdatePanel> 
    <asp:Timer ID="Timer" Interval="2000" runat="server" OnTick="TimerProgress_Tick"> 
    </asp:Timer> 
+1

이 서버 측 타이머가 클라이언트 측 컨텍스트를 어떻게 업데이트합니까? – David

+0

@David - magic :) –

+0

ASPX 페이지의 업데이트 패널에서. – Apollo

답변

0

내가 브라우저 효율적이고 실시간으로 서버 데이터를 교환시키기 위해 설계 SignalR와이를 구현한다.

0

ClientScript.RegisterClientScriptBlock을 ScriptManager.RegisterStartupScript로 변경하고 새로 고칩니다.

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp", sb.ToString(), false); 
관련 문제