none
UpdatePanel + Timer + Image + ashx + Só funciona na Primeira vez RRS feed

  • Pergunta

  • Pessoal Tenho uma pagina na qual possuo um controle IMAGE do própio ASP>NET esse Image é atualizado a cada 30s através de um timer do AJAX.
    Tenho o seguinte código abaixo

    protected void Timer1_Tick(object sender, EventArgs e)
            {
                try
                {
                    HttpContext context = HttpContext.Current;
                    imgItem_1.ImageUrl = "~/Handler1.ashx?IdImagem=" + Request.QueryString["idN"] + "&TipoImg=0";
                    imgItem_1.Visible = true;
                }
    
                catch (Exception ex)
                {
    
    
                }
                
            }
    Funcina normal o tick sempre caí no método. Porém na Segunda vez já não funciona mais o Handler1.ashx. O timer continua funcionando e caindo no método mas nao aciona o Handler1.ashx . Debugando ele passa na linha normal mas nao entra. Na primeira vez do timer funciona normal. acionando o código dentro do Handler1 mas na segunda vez não.O que pode ser?
    segunda-feira, 25 de fevereiro de 2013 12:56

Respostas

  • Bom dia,

    Tenta isso:

    Continua usando o UpdatePanel. Troca o </PostBackTrigger> do UpdatePanel por:

    <asp:AsyncPostBackTrigger ControlID="TIMER ID" EventName="Tick" />

    Você deve trocar o ControlID pelo ID do timer. O EventName é o tipo de evento do teu timer, que nesse caso é o Tick (num botão poderia ser OnClick por ex.)





    • Sugerido como Resposta Thiag0coelho segunda-feira, 25 de fevereiro de 2013 16:48
    • Editado Thiag0coelho segunda-feira, 25 de fevereiro de 2013 16:56
    • Marcado como Resposta ferlindo7 segunda-feira, 25 de fevereiro de 2013 22:29
    segunda-feira, 25 de fevereiro de 2013 16:42
  • Gente consegui resolver e entender tudo

    O fato de só funcionar uma vez é por que o navegador entendia que aquela imagem já existia e nao gerava novamente a solução foi mudar a url da imagem com numero aleatorio para ele entender que é outra imagen

     string teste = DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
                        imgItem_1.Visible = true;
                        imgItem_1.ImageUrl = "~/Handler1.ashx?IdImagem=" + Request.QueryString["idN"] + "&TipoImg=0" + "&temp=" + teste;

    Obrigado a todos !!!

    • Marcado como Resposta ferlindo7 segunda-feira, 25 de fevereiro de 2013 22:29
    segunda-feira, 25 de fevereiro de 2013 22:28

Todas as Respostas

  • Qual a ex?

    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC

    segunda-feira, 25 de fevereiro de 2013 13:42
    Moderador
  • Bom De alguma forma quando existe o Update Panel ele entende que não é pra atualizar sei lá. Tirei o Update Panel e continuei usando o timer e aí funciona normal. Mas dá aquela piscada na imagem desagradavel.

    =(

    segunda-feira, 25 de fevereiro de 2013 14:11
  • Bom dia,

    Tenta isso:

    Continua usando o UpdatePanel. Troca o </PostBackTrigger> do UpdatePanel por:

    <asp:AsyncPostBackTrigger ControlID="TIMER ID" EventName="Tick" />

    Você deve trocar o ControlID pelo ID do timer. O EventName é o tipo de evento do teu timer, que nesse caso é o Tick (num botão poderia ser OnClick por ex.)





    • Sugerido como Resposta Thiag0coelho segunda-feira, 25 de fevereiro de 2013 16:48
    • Editado Thiag0coelho segunda-feira, 25 de fevereiro de 2013 16:56
    • Marcado como Resposta ferlindo7 segunda-feira, 25 de fevereiro de 2013 22:29
    segunda-feira, 25 de fevereiro de 2013 16:42
  • beleza agora deu certo ele tá caindo no timer e gerando a imagem, mas continua dando aquele efeito de piscar a tela. O que pode ser?
    segunda-feira, 25 de fevereiro de 2013 20:19
  • Gente consegui resolver e entender tudo

    O fato de só funcionar uma vez é por que o navegador entendia que aquela imagem já existia e nao gerava novamente a solução foi mudar a url da imagem com numero aleatorio para ele entender que é outra imagen

     string teste = DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
                        imgItem_1.Visible = true;
                        imgItem_1.ImageUrl = "~/Handler1.ashx?IdImagem=" + Request.QueryString["idN"] + "&TipoImg=0" + "&temp=" + teste;

    Obrigado a todos !!!

    • Marcado como Resposta ferlindo7 segunda-feira, 25 de fevereiro de 2013 22:29
    segunda-feira, 25 de fevereiro de 2013 22:28