【问题标题】:cant update label using timer无法使用计时器更新标签
【发布时间】:2012-01-07 17:23:10
【问题描述】:

我有一个使用脚本管理器的母版页,在另一个页面上我想显示一个从 0 到 10 分钟计数的数字时钟。 asp.net 代码:

<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
</asp:ScriptManagerProxy>
<asp:Timer ID="Timer1" runat="server" Interval="5000" ontick="Timer1_Tick">
    </asp:Timer>    
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
<ContentTemplate>
 <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>

C#代码:

int min=0,sec=0;
 protected void Timer1_Tick(object sender, EventArgs e)
 { 
    if (sec == 55)
    {
        min = min + 1;
        sec = 0;
    }
    else
    {
        sec = sec + 5;
    }
    Label1.Text = min.ToString() +":"+ sec.ToString();
    if(min==10&&sec==0)
    {
        Timer1.Enabled=false;
        Label1.Text = "clock over!";
    }

页面从 0:5 开始,完全没有变化。 d代码是否有错误请指出!

【问题讨论】:

    标签: asp.net timer label


    【解决方案1】:

    我敢打赌,这将是您的更新面板。用于调试目的

    1. 尝试完全不使用更新面板 - 那样可以吗
    2. 将计时器放在更新面板中,忘记触发器

    事实上,第 2 点无论如何都可以完成 - 我不确定将其作为回发触发器的好处。里面的计时器也可以这样做

    但是

    老实说,我不会这样做。 Tick 方法不会执行回发(尽管是部分的)只是为了让计时器显示正常。

    有许多免费可用的组件将纯粹在客户端运行,这将大大提高效率,例如

    JQuery Timer

    编辑

    其实我想我已经发现了问题所在。这是您记录分钟和秒的方式。这些在变量中,并且将在每次回发(计时器滴答声)时重置。你需要将它们存储到可以持久回发的东西中,例如视图状态

    protected void Timer1_Tick(object sender, EventArgs e)  {  
    
       ViewState["min"] //not int min
       ViewState["sec"] //not int sec
    
       //.. you would need to use Convert (or Int32.Parse) to get 
       //.. then as an int to work with
    
    }
    

    但在家中 - 仍然不要这样做。使用 JQuery 组件或类似组件

    【讨论】:

    • 嘿,谢谢你的建议。我现在使用了一个 javascript 函数,但唯一的问题是我想在计时器的值为 10:00 时触发一个 c# 函数,并且我不想将值提交到表单,因为我希望 2 重定向到同一页面。有什么想法吗?
    • @YashUpadhyay 您需要从 JavaScript/JQuery 触发 asp.net 服务器端事件。链接stackoverflow.com/questions/8771097/… 很好地解释了如何做到这一点(不是我的回答——其他人)
    猜你喜欢
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    相关资源
    最近更新 更多