我在简单任务中遇到大问题...在asp.net页面上是Multiview,有两个视图,
在第一个视图中,我有一个ajax计时器,它计算从60到0的秒数。在updatepanel中,标签上显示时间。我想调用我的c#函数来做一些事情并最终改变活动视图。
我该怎么做?
我试图检查Timer_tick事件,如果秒== 0,我调用函数,但它不起作用。 我也试过Timer1.Enabled = false,但它也没有用。
我认为,我必须使用Javascript,但如何?我不知道在哪里以及如何...我还不知道Javascript。
这是我的Timer_Tick事件(标签上的时间正确显示)
protected void Timer1_Tick(object sender, EventArgs e)
{
Test t = (Test)Session["SelectedTest"];
if (t.Remaining.Minute == 0 && t.Remaining.Second == 0)
{
DoSomething();
}
else
{
t.Remaining= t.Remaining.AddSeconds(-1);
Label7.Text = t.Remaining.ToLongTimeString();
}
}
和我的DoSomething()函数:
public void DoSomething()
{
// Doing a lot of things....
MultiView1.ActiveViewIndex = 3;
}
功能Dosomething工作正常,我也按钮调用这个功能 - 它正在工作但我也想调用函数,如果剩余秒== 0。
答案 0 :(得分:0)
是的,我试过这个。调试后我知道,我的c#函数DoSomething()正在运行 - 但最后,View没有改变。在调用DoSomething()后,Timer Ticking再次...
我找到了js功能:
function stopTimer()
{
var timer = $find("<%=Timer1.ClientID%>")
timer._stopTimer();
}
但我不知道,我在哪里可以称之为。
编辑:我看到,我的函数DoSomething()多次调用。如果Timer显示0,则函数在每个tick中调用
编辑2: Noob-solution:)
在Timer1_Tick事件中:
t.Remaining = t.Remaining.AddSeconds(-1); Label7.Text = t.Remaining.ToLongTimeString();
if (t.Remaining.Minute == 0 && t.Remaining.Second == 1) Timer2.Interval = 1000;
原因:如果Timer是UpdatePanel的触发器,则无法从Tick事件
调用c#函数**我知道,这是更好的解决方案(可能是JavaScript),但我的截止日期很快,所以我必须使用它。