Domanda

Ho bisogno di uno script sul lato client per confermare che l'evento OnTick del timer può continuare.

Come invoco CanContinue () prima che si verifichi il postback di Timer1?
Come posso annullare il postback se l'utente seleziona Annulla?

<%@ 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>

NOTA: alcuni lettori potrebbero avere problemi a mostrare una conferma modale ogni x minuti. Concordo sul fatto che questo è scarso per l'usabilità, ma non sono in grado di cambiare il design.


AGGIORNAMENTO: Dopo tutto, ho deciso di non utilizzare un timer. Vedi questo post per dettagli su una soluzione alternativa.

È stato utile?

Soluzione 2

Ho deciso di non usare un timer dopo tutto. Vedi questo post per dettagli su una soluzione alternativa.

Altri suggerimenti

Non so se esiste un modo per collegarsi al metodo generato dal timer per invocare l'azione del server. Tuttavia è possibile ottenere un riferimento al componente JavaScript e avviare / arrestare o modificare l'intervallo. Con questo in mente, puoi fare un brutto hacking per ottenere la funzionalità che desideri.

Ad esempio:

  1. Ottieni un riferimento al tuo timer. (qualcosa come: $find(‘<%= Timer1.ClientID %>’);)
  2. Ferma il timer.
  3. Crea un nuovo timer con lo stesso intervallo.
  4. Esegui il timer e causa la condizione.
  5. A seconda del valore di ritorno della propria condizione .. è possibile impostare l'intervallo del timer generato dal server su ~ 0 e avviare / arrestare.

Questa non è una soluzione elegante, ma non posso dire di aver mai lavorato con i timer integrati in asp.net, quindi non posso offrire troppe informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top