none
Botão avançar RRS feed

  • Pergunta

  • Galera tenho uma aplicação Web que está muito lenta e quando clica mais de uma vez no botão avançar ele me gera mais de um registro no banco de dados. Como posso fazer para travar o botão ou mesmo independente da quantidade de vezes que ele for clicado, só gerar um registro ? Qual a melhor forma de fazer ?

    Obrigado


    SirSmart

    sexta-feira, 11 de janeiro de 2013 12:06

Respostas

  • Use:

    Button1.Attributes.Add("onclick", "this.disabled=true;" +ClientScript.GetPostBackEventReference(Button1, "").ToString());

    • Marcado como Resposta SirSmart sexta-feira, 11 de janeiro de 2013 12:46
    sexta-feira, 11 de janeiro de 2013 12:37

Todas as Respostas

  • Use:

    Button1.Attributes.Add("onclick", "this.disabled=true;" +ClientScript.GetPostBackEventReference(Button1, "").ToString());

    • Marcado como Resposta SirSmart sexta-feira, 11 de janeiro de 2013 12:46
    sexta-feira, 11 de janeiro de 2013 12:37
  • Desculpa não apareceu o que vc digitou ?

    Abraço


    SirSmart

    sexta-feira, 11 de janeiro de 2013 12:44
  • Cara,

    No seu code behind no evento click do botão logo na primeira linha:

    protected void Botao_Click(object sender, EventArgs e)
     {
        Botao.Enable = false;
        
       ...
     
       Botao.Enable = true;
     }

     Ou tente a ideia do nosso amigo ai em cima:

      Button1.Attributes.Add("onclick", "this.disabled=true;" +ClientScript.GetPostBackEventReference(Button1, "").ToString());

     

    sexta-feira, 11 de janeiro de 2013 19:47
  • Samuel, no Code Behind não vai funcionar, se o usuário clicar inúmeras vezes no botão ele será executado antes de ser processado no servidor.
    sábado, 12 de janeiro de 2013 00:26
  • Guilherme,

    A lógica acima que informei deixará disponível apenas o primeiro click, pois nada mais nada menos fará o mesmo processo que o seu código proposto acima com o "disabled=true", porém de uma forma pouco menos complicado para o nosso amigo ai.


    Atenciosamente, Samuel dos Anjos

    domingo, 13 de janeiro de 2013 23:38
  • Na verdade não fará Samuel, se você testar as duas situações verá a diferença no resultado, se clicar seguidamente em qualquer botão, supondo uma operação de inserção no banco, serão inseridos vários registros, o trecho que você postou funciona depois que a requisição passa pelo servidor, já o outro é acionado imediatamente no evento javascript.
    terça-feira, 15 de janeiro de 2013 19:31