Pergunta

Eu preciso de um script do lado do cliente para confirmar que o evento OnTick do temporizador pode prosseguir.

Como invoco CanContinue () antes do postback Timer1 ocorre?
Como faço para cancelar a postagem se o usuário seleciona o Anular?

<%@ 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: Alguns leitores podem ter problema com mostrando uma confirmação modal cada x minutos. Concordo que este é pobre para a usabilidade, mas eu não estou em posição de mudar o projeto.


UPDATE: Eu decidi não usar um temporizador depois de tudo. Consulte este pós para detalhes sobre uma solução alternativa.

Foi útil?

Solução 2

Eu decidi não usar um temporizador depois de tudo. Consulte este pós para detalhes sobre uma solução alternativa.

Outras dicas

Eu não sei se existe uma maneira de amarrar-se para o método gerado pelo temporizador para invocar a ação do servidor. No entanto, você pode ganhar uma referência ao componente javascript e iniciar / parar ou alterar o intervalo. Com isto em mente, você pode fazer alguma pirataria desagradável para obter a funcionalidade desejada.

Por exemplo:

  1. Ganho uma referência ao seu timer. (Algo como: $find(‘<%= Timer1.ClientID %>’);)
  2. Stop the timer.
  3. Criar um novo temporizador com o mesmo intervalo.
  4. Execute o seu temporizador e causar a doença.
  5. Dependendo do valor de retorno de sua condição .. você pode definir o intervalo de temporizador servidor gerado para ~ 0 e iniciar / parar.

Esta não é uma solução elegante, mas eu não posso dizer que eu já trabalhei com construído em temporizadores asp.net, então não posso oferecer muito insight.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top