我有一个使用脚本管理器的母版页,而在另一个页面上,我想要显示一个从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代码是否有错误!
答案 0 :(得分:1)
我敢打赌,它将成为您的更新面板。出于调试目的
事实上,无论如何都可以完成第2点 - 我不确定将它作为回发触发器的好处。
中的计时器也可以<强>然而强>
老实说,我不会这样做。 Tick方法不会执行回发(尽管是部分的)只是为了让计时器显示进行。
有许多免费提供的组件将完全在客户端运行,这将会提高很多(很多)效率。
修改强>
其实我觉得我已经发现了这个问题。这是你记录分钟和秒的方式。这些都是变量,每次回发都会被重置(Timer tick)。 Youu需要将它们存储在可以进行回发的内容中,例如视图状态
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组件或类似的