Frage

Ich benötige ein clientseitiges Skript, um zu bestätigen, dass das OnTick-Ereignis des Timers fortgesetzt werden kann.

Wie rufe ich auf? Kann fortsetzen() bevor das Timer1-Postback auftritt?
Wie kann ich das Postback abbrechen, wenn der Benutzer „Abbrechen“ auswählt?

<%@ Page Language="C#" %>
<script runat="server">
    protected void Timer1_OnTick(object sender, EventArgs e)
    {
        Response.Write("Last Postback: " + DateTime.Now.ToString());
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Timer Test</title>
    <script type="text/javascript" language="javascript">
        function CanContinue() {
            return confirm('The page is requesting new data.  Ok or Cancel?');
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_OnTick" Interval="300000" />
    </form>
</body>
</html>

NOTIZ:Einige Leser haben möglicherweise Probleme damit, alle x Minuten eine modale Bestätigung anzuzeigen.Ich stimme zu, dass dies schlecht für die Benutzerfreundlichkeit ist, aber ich bin nicht in der Lage, das Design zu ändern.


AKTUALISIEREN:Ich habe mich entschieden, doch keinen Timer zu verwenden.Sehen dieser Beitrag Einzelheiten zu einer Alternativlösung finden Sie hier.

War es hilfreich?

Lösung 2

ich beschlossen, kein Timer schließlich zu verwenden. Siehe diesen Beitrag für Details zu einer alternativen Lösung.

Andere Tipps

Ich weiß nicht, ob es eine Möglichkeit gibt, an die vom Timer generierte Methode anzuknüpfen, um die Serveraktion aufzurufen.Sie können jedoch einen Verweis auf die Javascript-Komponente erhalten und das Intervall starten/stoppen oder ändern.Vor diesem Hintergrund können Sie einige fiese Hackerangriffe durchführen, um die gewünschte Funktionalität zu erhalten.

Zum Beispiel:

  1. Verschaffen Sie sich einen Hinweis auf Ihren Timer.(etwas wie: $find(‘<%= Timer1.ClientID %>’);)
  2. Stoppen Sie den Timer.
  3. Erstellen Sie einen neuen Timer mit demselben Intervall.
  4. Führen Sie Ihren Timer aus und verursachen Sie die Bedingung.
  5. Abhängig vom Rückgabewert Ihrer Bedingung.Sie können das vom Server generierte Timer-Intervall auf ~0 einstellen und starten/stoppen.

Dies ist keine elegante Lösung, aber ich kann nicht sagen, dass ich jemals mit integrierten asp.net-Timern gearbeitet habe, daher kann ich nicht allzu viele Einblicke bieten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top