Pregunta

Necesito un script del lado del cliente para confirmar que el evento OnTick del temporizador puede continuar.

¿Cómo invoco CanContinue () antes de que se produzca la devolución de datos de Timer1?
¿Cómo cancelo la devolución si el usuario selecciona Cancelar?

<%@ 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: Algunos lectores pueden tener problemas para mostrar una confirmación modal cada x minutos. Estoy de acuerdo en que esto es pobre para la usabilidad, pero no estoy en condiciones de cambiar el diseño.


ACTUALIZACIÓN: después de todo, decidí no usar un temporizador. Consulte esta publicación para obtener detalles sobre una solución alternativa.

¿Fue útil?

Solución 2

Decidí no usar un temporizador después de todo. Consulte esta publicación para obtener detalles sobre una solución alternativa.

Otros consejos

No sé si hay una manera de vincular el método generado por el temporizador para invocar la acción del servidor. Sin embargo, puede obtener una referencia al componente javascript e iniciar / detener o cambiar el intervalo. Con esto en mente, puede hacer algunos hacks desagradables para obtener la funcionalidad que desea.

Por ejemplo:

  1. Obtenga una referencia a su temporizador. (algo así como: $find(‘<%= Timer1.ClientID %>’);)
  2. Detener el temporizador.
  3. Cree un nuevo temporizador con el mismo intervalo.
  4. Ejecute su temporizador y cause la condición.
  5. Dependiendo del valor de retorno de su condición ... puede establecer el intervalo del temporizador generado por el servidor en ~ 0 e iniciar / detener.

Esta no es una solución elegante, pero no puedo decir que haya trabajado con temporizadores incorporados asp.net, así que no puedo ofrecer mucha información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top