2016-06-01 2 views
1

Im folgenden Code möchte ich Button1 deaktiviert werden, bis der Countdown auf "sdur" Minuten sagen 3 Minuten. Aber das Verhalten der Schaltfläche ändert sich nicht. Bitte helfen Sie. Ich habe auch versucht Button1.Enabled = true; noch keine Wirkung. Vielen Dank im VorausKann ASP.NET Button nicht mit C# im Backend dynamisch in timer_tick Methode aktivieren/deaktivieren?

protected void timer1_tick(object sender, EventArgs e) 
{ 
    int rem_minutes = (Int32)DateTime.Parse(Session["timeout"].ToString()).Subtract(DateTime.Now).TotalMinutes; 
    if (sdur <rem_minutes) 
     Button1.Attributes.Add("Enabled", "False"); 

    else 
     Button1.Attributes.Add("Enabled", "True"); 
    if (0 > DateTime.Compare(DateTime.Now, DateTime.Parse(Session["timeout"].ToString()))) 
    { 
     lblTimer.Text = string.Format("Time Left: 00:{0}:{1}", ((Int32)DateTime.Parse(Session["timeout"].ToString()).Subtract(DateTime.Now).TotalMinutes).ToString(), ((Int32)DateTime.Parse(Session["timeout"].ToString()).Subtract(DateTime.Now).Seconds).ToString()); 

    } 
    else 
    { 
     timer1.Enabled = false; 
     Response.Redirect("Logout.aspx"); 
    }  
} 

Ich versuchte in Java-Skript zu.

htmlTable.Append(" <script> var seconds = " + ttime + "; function secondPassed() { var minutes = Math.round((seconds - 30)/60); var remainingSeconds = seconds % 60; if (remainingSeconds < 10) { remainingSeconds = '0' + remainingSeconds; } document.getElementById('countdown').innerHTML = 'Time Left :- ' + minutes + ':' + remainingSeconds; if (seconds == 0) { clearInterval(countdownTimer) ; document.getElementById('Button1').click() ; } else { seconds--; } if(minutes<=" + sdur + ") { document.getElementById('Button1').disabled=false; } } var countdownTimer = setInterval('secondPassed()', 1000); </script>"); 
+1

Verwenden Sie den Debugger und Schritt durch den Code .. der Timer wird ausgelöst, basierend auf dem 'timer1_tick Ereignis und Intervall' vielleicht können Sie sehen, wo Sie falsch gehen, wenn Sie durch den Code gehen .. auch 'Ich denke, Sie sollten die setzen Schaltfläche in der Inhaltsvorlage, so dass sie deaktiviert wird, wenn das Update-Panel aktualisiert wird. Wenn Sie updatepanel verwenden ' – MethodMan

+4

Dieser Code wird nur auf der Serverseite ausgeführt und wirkt sich nicht auf die Clientseite aus, bis die Seite aktualisiert wird. – Rick

+0

Ich habe den Debugger verwendet, Die Logik funktioniert gut. Ich denke, wie Rick sagte, bis es die Seite aktualisiert, wirkt sich das nicht aus. Also, was ist die Lösung @Rick? –

Antwort

1

das onTick Ereignis Ihres Timer verwenden, die automaticaly Postback:

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<asp:Timer ID="Timer1" runat="server" OnTick="CodeBehindFunction" > 
</asp:Timer> 

und in der C# -Code hinter:

protected void CodeBehindFunction(object sender, EventArgs e) 
{ 
    if(Get_timeElapsed() > timeOut) 
     btnMAJ.Enable = false; 
} 

Dies funktioniert für mich.

Aber das Beste ist, clientseitige Programmierung (Javascript oder was auch immer für Sie funktioniert) zu verwenden, so dass Sie nicht zu oft zurück schreiben müssen.

Verwandte Themen