簡體   English   中英

Javascript無法在ASP.NET的Timer_Tick方法上運行

[英]Javascript wont work on Timer_Tick method on ASP.NET

我有一個計時器,它每2秒滴答一次,並獲取不斷變化的百分比值,當它顯示在標簽中時,它可以很好地工作。 我想做同樣的事情,但是要在使用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>

我將使用SignalR來實現這一點,SignalR旨在使您的服務器與瀏覽器高效且實時地交換數據。

我知道它可以工作,只需將ClientScript.RegisterClientScriptBlock更改為ScriptManager.RegisterStartupScript,它就會刷新。

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp", sb.ToString(), false); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM