none
Método TextChanged do TextBox só funciona quando o foco sai do TextBox RRS feed

  • Pergunta

  • Olá pessoal bom dia,  tenho o seguinte código

    <asp:UpdatePanel ID="upAgenda" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
                                <ContentTemplate>
    
                                    <div class="control-group">
                                        <asp:Label class="control-label" ID="lblNome" runat="server" Text="Nome:"></asp:Label>
                                        <div class="controls">
                                            <asp:TextBox ID="edtNome" MaxLength="60" placeholder="Nome" runat="server" AutoPostBack="true" OnTextChanged="edtNome_TextChanged"></asp:TextBox>
                                        </div>
                                    </div>    
    
                                    <div class="control-group">                                       
                                </ContentTemplate>
                                <Triggers>
                                    <asp:AsyncPostBackTrigger ControlID="edtNome" EventName="TextChanged"/>
                                </Triggers>
                            </asp:UpdatePanel>     
    public void edtNome_TextChanged(object sender, EventArgs e)
            {
                try
                {
                    // AQUI FAÇO A CONSULTA NO BANCO
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }      
    porém o textchanged só é executado quando o textbox perde o foco, e preciso que seja ao digitar cada tecla, alguma ideia de como fazê-lo? com keypress nem sequer executa, e NÃO POSSO UTILIZAR JAVASCRIPT

    segunda-feira, 31 de março de 2014 14:02

Respostas

  • Wennder obrigado , dessa forma funcionou, mas consegui resolver de uma forma tranquila também

    $(this).blur();
    $(this).focus();

    Obrigado pela ajuda
    • Marcado como Resposta guitanure segunda-feira, 31 de março de 2014 17:01
    segunda-feira, 31 de março de 2014 17:01

Todas as Respostas

  • Olá guitanure,

    eventos no servidor só vão executar quando o text perder o foco, para fazer o que você quer teria quer usar o java script mesmo. Por curiosidade, porque não poderia usa-lo?

    Wennder Santos


    segunda-feira, 31 de março de 2014 14:06
  • Porque tenho um grid abaixo e preciso preenche-lo conforme o que é digitado, ou seja, faço uma consulta no banco de dados, não teria alguma forma de fazer sair do foco e entrar no foco de novo?

    gambiarra never ends....
    segunda-feira, 31 de março de 2014 14:47
  • Olá,

    Você consegue fazer isso utilizando java script para reconhecer a mudança de texto no text e ajax para fazer a consulta e carregar o grid. Não vou saber te explicar como fazer dessa forma.

    Outra forma, dessa eu consigo te ajudar, seria simular o click de um botão para gerar um postback na página.

    Primeiro adicione um botão na página (ele deve estar com visible=true).

    Segundo crie o javascript para executar o click de um botão:

      function FazerBusca() {
                        $("#btnTeste").click(); //simulando click do botão
                    }

    O código acima vai disparar o evento click() do botão btnTeste, basta fazer sua consulta utilizando esse evento no seu CodeBehind para dar inicio.

    O seu text deverá chamar o javascript +/- dessa forma:

     <asp:TextBox ID="txtBuscar" runat="server" onkeyup="FazerBusca()"></asp:TextBox>

    Quando finalizar a consulta jogue o foco no botão novamente:

    txtBuscar.Focus()

    Não é a melhor forma de se fazer, mas, vai funcionar. Caso faça dessa forma, aconselho que posteriormente tente fazer utilizando ajax.


    Wennder Santos


    segunda-feira, 31 de março de 2014 15:22
  • Wennder vou testar e posto aqui, mas não teria como só fazer um JS em que só perderia o foco e colocaria o foco novamente?
    segunda-feira, 31 de março de 2014 15:27
  • Esse exemplo que te mostrei vai fazer isso, quando o evento click do botão for disparado ele perderá o foco. Após fazer fazer sua consulta e carregar o grid você deverá colocar o foco novamente.

    Wennder Santos

    segunda-feira, 31 de março de 2014 15:42
  • Wennder obrigado , dessa forma funcionou, mas consegui resolver de uma forma tranquila também

    $(this).blur();
    $(this).focus();

    Obrigado pela ajuda
    • Marcado como Resposta guitanure segunda-feira, 31 de março de 2014 17:01
    segunda-feira, 31 de março de 2014 17:01