none
Problema ao executar um método/evento em um campo textbox RRS feed

  • Pergunta

  • Olá amigos,

    Estou com dificuldade para executar um evento no campo textbox. Vide código:

    <asp:TextBox ID="tbCpfSegurado" runat="server" CssClass="longinput" Width="200px" MaxLength="11" OnDisposed="tbCpfSegurado_Disposed" OnTextChanged="tbCpfSegurado_TextChanged"></asp:TextBox>

        protected void tbCpfSegurado_TextChanged(object sender, EventArgs e)
        {
            SeguradoDAO oSeguradoDAO = new SeguradoDAO();
    
            if (!oSeguradoDAO.verifySegurado("cpf", tbCpfSegurado.Text))
            {
                oExibeMensagem.show(Page, "Já existe um usuário cadastrado com este CPF.");
            }
        }

    Já tentei também via jscript:

    <asp:TextBox ID="tbCpfSegurado" runat="server" CssClass="longinput" Width="200px"  MaxLength="11" OnDisposed="tbCpfSegurado_Disposed" OnTextChanged="tbCpfSegurado_TextChanged" onblur="verificaCpf(this);" AutoPostBack="True"></asp:TextBox>

        protected void verificaCpf()
        {
            SeguradoDAO oSeguradoDAO = new SeguradoDAO();
    
            if (!oSeguradoDAO.verifySegurado("cpf", tbCpfSegurado.Text))
            {
                oExibeMensagem.show(Page, "Já existe um usuário cadastrado com este CPF.");
            }
        }

    Tudo sem sucesso!

    Poderiam me ajudar!?

    Desde já, obrigado!

    quinta-feira, 18 de outubro de 2012 13:41

Todas as Respostas

  • wcsantos, Bom dia

    No primeiro exemplo que você postou, faltou apenas o AutoPostBack = true;

    e o evento text_changed será acionado ao sair do campo 


    Bruno Viegas D. Ribeiro

    Analista Desenvolvedor de Sistemas
    www.brunoviegas.com.br
     

    quinta-feira, 18 de outubro de 2012 13:55
  • Cara, já tinha testado com AutoPostBack = true;.

    Funciona, mas não resolve. Porque?

    1o problema: quando a pessoa usa o auto-complete do browser, o autopostback não é ativado e pula para o campo seguinte sem chamar o método;

    2o problema: mesmo que o cara digite o cpf "na unha", SE eu usar o ajax para não executar o "reload" da página, a mensagem de erro não é exibida.

                                                    <asp:UpdatePanel ID="upCpf" runat="server">
                                                        <ContentTemplate>
                                                            <asp:TextBox ID="tbCpfSegurado" runat="server" CssClass="longinput" Width="200px" MaxLength="11" OnTextChanged="tbCpfSegurado_TextChanged" AutoPostBack="True"></asp:TextBox>
                                                        </ContentTemplate>
                                                    </asp:UpdatePanel>

    quinta-feira, 18 de outubro de 2012 14:42
  • Em relação ao primeiro problema

    em qual browser você testou? no meu caso eu testei no Chrome e funcionou.

    Agora o segundo problema

    Posta o código aqui de como você tenta mostrar essa mensagem, para tentarmos te ajudar


    Bruno Viegas D. Ribeiro

    Analista Desenvolvedor de Sistemas
    www.brunoviegas.com.br
     

    quinta-feira, 18 de outubro de 2012 16:11
  • 1. Também testei no chrome... se eu usar o auto-complete ele não chama o método..

    2. O alert não aparece quando o textbox está dentro do UpdatePanel

                                                    <asp:UpdatePanel ID="upCpf" runat="server">
                                                        <ContentTemplate>
                                                            <asp:TextBox ID="tbCpfSegurado" runat="server" CssClass="longinput" Width="200px" MaxLength="11" OnTextChanged="tbCpfSegurado_TextChanged" AutoPostBack="True"></asp:TextBox>
                                                        </ContentTemplate>
                                                    </asp:UpdatePanel>
        /// <summary>
        /// Verifico se já existe CPF do segurado cadastrado no sistema
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void tbCpfSegurado_TextChanged(object sender, EventArgs e)
        {
            SeguradoDAO oSeguradoDAO = new SeguradoDAO();
    
            if (oSeguradoDAO.verifySegurado("cpf", tbCpfSegurado.Text))
            {
                oExibeMensagem.show(Page, "Já existe um usuário cadastrado com este CPF.");
            }
        }

            #region Métodos Públicos
            /// <summary>
            /// Exibo mensagem
            /// </summary>
            /// <param name="pageScript">Recebe o objeto página (Page)</param>
            /// <param name="strMessage">Recebe a mensagem a ser exibida na tela</param>
            /// <remarks></remarks>
            /// <returns>Não retorna nada, apenas exibe mensagem na tela</returns>        
            public void show(System.Web.UI.Page pageScript, String strMessage)
            {
                ClientScriptManager clientScript;
    
                clientScript = pageScript.ClientScript;
    
                String strScript = "<script language=JavaScript>";
                strScript += "alert('" + strMessage + "');";
                strScript += "</script>";
    
                if (!clientScript.IsStartupScriptRegistered("clientScript"))
                {
                    clientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", strScript);
                }
    
            }
            #endregion

    Desde já, obrigado!
    quinta-feira, 18 de outubro de 2012 17:18