Javascript不能在ASP.NET上使用Timer_Tick方法

时间:2013-11-26 16:07:02

标签: c# javascript 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>

2 个答案:

答案 0 :(得分:0)

我将使用SignalR实现此功能,该功能旨在让您的服务器高效,实时地与浏览器交换数据。

答案 1 :(得分:0)

我让它工作只需将ClientScript.RegisterClientScriptBlock更改为ScriptManager.RegisterStartupScript并刷新。

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