none
asp.net textbox moeda RRS feed

  • Pergunta

  • ola

    preciso formatat em asp.net um textbox  para valor moeda brasileira

    estou usando ajaxtookit  alias falando em ajaxtoolkit vejo que muitos deixam

    o ajaxtoolkit para usar jquery

      

    segunda-feira, 27 de fevereiro de 2012 13:01

Respostas

  •  Bom dia!

       Segue um exemplo usando validators:

     <asp:ValidationSummary ID="ValidationSummary1" ValidationGroup="cadastro" runat="server" />
                <div>
                    <asp:TextBox ID="txtValor" runat="server" ValidationGroup="cadastro"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="rfvTxtValor" ControlToValidate="txtValor" runat="server"
                        ErrorMessage="Informar o Valor!" ValidationGroup="cadastro" SetFocusOnError="True">*</asp:RequiredFieldValidator><asp:RangeValidator
                            ID="rvTxtValor" ControlToValidate="txtValor" runat="server" ErrorMessage="O valor deve ser maior que 0 e menor que 999!"
                            ValidationGroup="cadastro" MinimumValue="0,01" MaximumValue="999" SetFocusOnError="True" 
                        Type="Double">*</asp:RangeValidator><asp:Button
                                ID="btnValidar" runat="server" Text="Validar" ValidationGroup="cadastro"/>
    
                </div>

      Como fica:



        Essa foi a validação do lado cliente com javascript, aí no lado sever você precisa usar o método que já postei que verifica se a página foi validada com sucesso (Page.IsValid).

     Espero ter lhe ajudado!!


    Thiago Rogerio
    www.thiagorogerio.com.br
    thiagorogeriobr@hotmail.com

    • Marcado como Resposta cesarmene terça-feira, 28 de fevereiro de 2012 13:23
    terça-feira, 28 de fevereiro de 2012 12:59

Todas as Respostas

  • Bom dia César,
     
    No caso é bem simples esta formatação no código c#, veja abaixo:                        
     
    //Formata para moeda
     
    this.txtSeuTextBox.Text = Valor.ToString("C");
     
    Vale lembrar que para forçar sua aplicação a trabalhar com o formato brasileiro, você deve incluir o seguinto código no seu arquivo global.asax:
     

    using System.Globalization;
    using System.Threading;
     
    protectedvoidApplication_BeginRequest(objectsender, EventArgse) {
     
        Thread.CurrentThread.CurrentUICulture = newCultureInfo("pt-BR");         

        Thread.CurrentThread.CurrentCulture = newCultureInfo("pt-BR");
     
    }

    Você também pode utilizar o String.Format, como no exemplo abaixo:

            int Valor = 803;

            string Formato1 = String.Format("{0:C}", Valor); //Moeda

            string Formato2 = String.Format("{0:C8}", Valor); //Moeda com 8 casas decimais

            string Formato3 = String.Format("{0:D}", Valor); //Decimal

    • Editado Rafael Reis segunda-feira, 27 de fevereiro de 2012 13:34
    • Sugerido como Resposta Thiago-deOliveira segunda-feira, 27 de fevereiro de 2012 14:42
    segunda-feira, 27 de fevereiro de 2012 13:30
  • obrigado pela ajuda

    mas como eu formato a mascara no webform

    segunda-feira, 27 de fevereiro de 2012 14:21
  • bom dia Cesarmene

    Eu uso mascara em JQuery, uso essa: http://jquerypriceformat.com/ 

    Até agora não me deu nenhum problema

    • Sugerido como Resposta Thiago-deOliveira segunda-feira, 27 de fevereiro de 2012 14:42
    segunda-feira, 27 de fevereiro de 2012 14:35
  • mas como voce pega o valor

    sem a mascara

    para poder gravar no banco de dados?

    segunda-feira, 27 de fevereiro de 2012 18:39
  • ola

     tenho isto no meu web.config   (visual 2010)

     

     <globalization culture="pt-BR" uiCulture="pt-BR"/>

    isto é suficiente para trabalhar em "portugues brasil"

    segunda-feira, 27 de fevereiro de 2012 18:44
  • Olá Cesar,

    primeiramente utilize o LCID="1046", para usar o padrão Brasileiro de letras e valoes.

    Isso vc coloca no ASPX

    Segue um exemplo.

    <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" LCID="1046" %>

    Agora estou a conversão para moeda.

     public void tranformaMoeda()
        {
            int valor = 0;
            valor = 152500;
            Label lbl = new Label();
            lbl.Text = valor.ToString();
            lbl.Text = String.Format("{0:C8}", Convert.ToInt32(lbl.Text)).ToString();

        }

    Testei aqui e funcionou, qualquer duvida estarei a disposição.


    Caso a resposta tenha ajudado favor marcar como respondida.

    segunda-feira, 27 de fevereiro de 2012 19:24
  • voce usa esta funcao

    para pegar o valor de um texto box formatado com jquery

    voce poderia me mandar os parametros do jquery para formatar valor em moeda brasileira

    outra coisa como voce verifica por exemplo se o valor tem que ser maior que zero

    ou se algum valor foi informado?

     public void tranformaMoeda()
        {
            int valor = 0;
            valor = 152500;
            Label lbl = new Label();
            lbl.Text = valor.ToString();
            lbl.Text = String.Format("{0:C8}", Convert.ToInt32(lbl.Text)).ToString();

        }

    segunda-feira, 27 de fevereiro de 2012 19:40
  • Não Cesar,

    Esse medoto é em C#, eu fiz só um exemplo.

    Nada de jquery;

     /*nome do metodo*/ 
     public void tranformaMoeda()
        {
            int valor = 0;             /*declarei essa variavel com o valor inicial a 0*/
            valor = 152500;         /*Passei um valor simbolico aqui só para formatar*/
            Label lbl = new Label(); /* aqui eu criei um objeto do tipo label em tempo de execuão*/
            lbl.Text = valor.ToString(); /*Aqui estou fazendo com que o label receba o valor */

    if (valor <= 0)
            {
                Response.Write("Valor incorreto");
            }
            else
            {
                lbl.Text = String.Format("{0:C8}", Convert.ToInt32(lbl.Text)).ToString();
            }
    }

    Você está fazendo em qual linguagem?


    Caso a resposta tenha ajudado favor marcar como respondida.

    segunda-feira, 27 de fevereiro de 2012 20:28
  • asp.net com c#

    mas eu preciso mascarar o valor do textbox para moeda

    o cliente vali informar o valor do imovel e este valor é obrigatório

    dei uma olhada no ajaxtoolkit

    segunda-feira, 27 de fevereiro de 2012 20:33
  • Ah sim entendi Cesar.

    Fiz um exemplo aqui e deu certo.

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Projeto1.aspx.cs" Inherits="Projeto1" %>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>


        <script language="javascript">
            function MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e) {
                var sep = 0;
                var key = '';
                var i = j = 0;
                var len = len2 = 0;
                var strCheck = '0123456789';
                var aux = aux2 = '';
                var whichCode = (window.Event) ? e.which : e.keyCode;
                if (whichCode == 13) return true;
                key = String.fromCharCode(whichCode); // Valor para o código da Chave
                if (strCheck.indexOf(key) == -1) return false; // Chave inválida
                len = objTextBox.value.length;
                for (i = 0; i < len; i++)
                    if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
                aux = '';
                for (; i < len; i++)
                    if (strCheck.indexOf(objTextBox.value.charAt(i)) != -1) aux += objTextBox.value.charAt(i);
                aux += key;
                len = aux.length;
                if (len == 0) objTextBox.value = '';
                if (len == 1) objTextBox.value = '0' + SeparadorDecimal + '0' + aux;
                if (len == 2) objTextBox.value = '0' + SeparadorDecimal + aux;
                if (len > 2) {
                    aux2 = '';
                    for (j = 0, i = len - 3; i >= 0; i--) {
                        if (j == 3) {
                            aux2 += SeparadorMilesimo;
                            j = 0;
                        }
                        aux2 += aux.charAt(i);
                        j++;
                    }
                    objTextBox.value = '';
                    len2 = aux2.length;
                    for (i = len2 - 1; i >= 0; i--)
                        objTextBox.value += aux2.charAt(i);
                    objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
                }
                return false;
            }

        </script>






    </head>
    <body>

        <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="TextBox1" runat="server" Font-Names="texto" Width="128px" onKeyPress="return(MascaraMoeda(this,'.',',',event))"></asp:TextBox>       
        </div>
        </form>
    </body>
    </html>




    Caso a resposta tenha ajudado favor marcar como respondida.

    • Sugerido como Resposta Renan Buzzi segunda-feira, 27 de fevereiro de 2012 20:49
    segunda-feira, 27 de fevereiro de 2012 20:49
  • cara voce tá me dando uma mão e tanto

    mas não daria para usar jquery?

    outra coisa e se o usuario não informar nada e o valor deve ser maior que zero?


    segunda-feira, 27 de fevereiro de 2012 21:21
  • ola pedro

    como voce valida o textbox usando o  

    http://jquerypriceformat.com/

    se o valor tiver que ser maior que zero

    e como voce pega este valor sem mascara em c#

    estou desenvolvendo asp.net + c# tenho um webform com valor do produto e valor da comissao

    e nenhum dos dois pode ser zero

    terça-feira, 28 de fevereiro de 2012 10:25
  •     

     Bom dia!

         Segue uma sugestão para formatação de moeda. Criei um método em C#, pois assim você pode reaproveitar ele em várias página e não precisa ficar escrevendo javascript/jQuery, basta invocar o método passando os parâmetros.

    1) Método para adicionar o jQuery de validação:

    /// <summary> /// Campo text aceitar somente valores. Informar o valor do CssClass e será aplicado a todos os itens com esse valor. /// </summary> /// <param name="CssClass">Valor do atributo cssclass</param> /// <param name="Maximo">Máximo de digitos</param> /// <param name="CasasDecimais">Número de casas decimais</param> public void JQueryValor(string CssClass, Int16 Maximo, Int16 CasasDecimais) { Page.ClientScript.RegisterClientScriptInclude("jQueryPriceFormat", Page.ResolveClientUrl("~/javascript/jquery.price_format.1.4.js")); string script = " $(document).ready(function () { " + " $('." + CssClass + "').priceFormat({" + " limit: " + Maximo.ToString() + "," + " centsLimit: " + CasasDecimais.ToString() + "," + " prefix: ''," + " centsSeparator: ','," + " thousandsSeparator: '.'" + " });" + "});"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "JQueryMask" + CssClass, script, true); }

        


    2) Criar os campos no .aspx e definir a CssClass deles:
    *Nesse exemplo defini 5 textbox, note que a propriedade CssClass é igual em todos.

        <asp:TextBox ID="txtValor1" runat="server" CssClass="moeda"></asp:TextBox>
        <asp:TextBox ID="txtValor2" runat="server" CssClass="moeda"></asp:TextBox>
        <asp:TextBox ID="txtValor3" runat="server" CssClass="moeda"></asp:TextBox>
        <asp:TextBox ID="txtValor4" runat="server" CssClass="moeda"></asp:TextBox>
        <asp:TextBox ID="txtValor5" runat="server" CssClass="moeda"></asp:TextBox>
        



    3) No code invocar o método JQueryValor, pois ele irá gerar o código jQuery de formatação:

            protected void Page_Load(object sender, EventArgs e)
            {
                JQueryValor("moeda", 8, 2);
            }


          4) Olhando o código html gerado da página, note que foi adicionado o código jQuery, bem como o include da biblioteca:

       

        5) O jQuery seleciona os campos que será aplicado a mascara pela propriedade class do html, note na imagem acima a parte em destaque, esse seletor indica ao jQuery para pegar todos que tem o valor da propriedade = moeda. 

          Para funcionar no seu ambiente, você precisa baixar a biblioteca do jQuery e esse componente jquery.price_format.

          Espero ter lhe ajudado!! Se tiver mais duvidas, poste aqui!  

          Se este post lhe foi útil, marque como resposta, pois assim você ajudará outros usuários que tiverem a mesma duvida.  Obrigado!!

    Thiago Rogerio
    www.thiagorogerio.com.br
    thiagorogeriobr@hotmail.com


    • Editado Thiago-deOliveira terça-feira, 28 de fevereiro de 2012 11:19 corrigido erro de digitação
    terça-feira, 28 de fevereiro de 2012 11:15
  • eu entendi 

    mas veja, estou usando ajaxtoolkit para validar outros campos

    e preciso validar estes campos valores que usam jquery price format.

    como informar ao usuario que o campo valor deve ser maior que zero

    e como pegar o valor sem mascara para gravar no sql server?

    terça-feira, 28 de fevereiro de 2012 11:32
  •   Bom dia!!

         Você pode usar o server controle asp.net range validator, mais detalhes:
    http://www.w3schools.com/aspnet/control_rangevalidator.asp

       


    Thiago Rogerio
    www.thiagorogerio.com.br
    thiagorogeriobr@hotmail.com

    terça-feira, 28 de fevereiro de 2012 11:56
  • voce não tem um exemplo

    muito obrigado

    terça-feira, 28 de fevereiro de 2012 12:29
  • Cara para forçar o usuário, basta vc colocar um * informando campo obrigatório.

    Assim vc coloca um tolltip no campo informando que o campo deve ser preenchido.

    Caso o usuário não informar, ai vc manda um alert forçando ele a colocar o valor no TextBox.


    Caso a resposta tenha ajudado favor marcar como respondida.

    terça-feira, 28 de fevereiro de 2012 12:43
  • eu entendi

    mas e a mascara do jquery

    não teria que tirar a  mascara antes de validar

    terça-feira, 28 de fevereiro de 2012 12:54
  • Cesar bom dia, me desculpe por não responder antes,

    Segue uma validação de TexTBox com o Jquery.

     <script type="text/javascript">

         $(document).ready(function() {
         $("#bButton1").click(function() {
         if ($("#TextBox1").val() == "")
                     alert('Insira um registro!');
             });
         });
        </script>

    Vê se funciona.


    Caso a resposta tenha ajudado favor marcar como respondida.

    terça-feira, 28 de fevereiro de 2012 12:56
  •  Bom dia!

       Segue um exemplo usando validators:

     <asp:ValidationSummary ID="ValidationSummary1" ValidationGroup="cadastro" runat="server" />
                <div>
                    <asp:TextBox ID="txtValor" runat="server" ValidationGroup="cadastro"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="rfvTxtValor" ControlToValidate="txtValor" runat="server"
                        ErrorMessage="Informar o Valor!" ValidationGroup="cadastro" SetFocusOnError="True">*</asp:RequiredFieldValidator><asp:RangeValidator
                            ID="rvTxtValor" ControlToValidate="txtValor" runat="server" ErrorMessage="O valor deve ser maior que 0 e menor que 999!"
                            ValidationGroup="cadastro" MinimumValue="0,01" MaximumValue="999" SetFocusOnError="True" 
                        Type="Double">*</asp:RangeValidator><asp:Button
                                ID="btnValidar" runat="server" Text="Validar" ValidationGroup="cadastro"/>
    
                </div>

      Como fica:



        Essa foi a validação do lado cliente com javascript, aí no lado sever você precisa usar o método que já postei que verifica se a página foi validada com sucesso (Page.IsValid).

     Espero ter lhe ajudado!!


    Thiago Rogerio
    www.thiagorogerio.com.br
    thiagorogeriobr@hotmail.com

    • Marcado como Resposta cesarmene terça-feira, 28 de fevereiro de 2012 13:23
    terça-feira, 28 de fevereiro de 2012 12:59
  • ola pessoal, aproveitando o post....

    Thiago, fiz um exemplo igual ao que vc passou....

    Se registro o js na função não funciona...tenho que color a chamada da biblioteca no html da pagina...

    O registro na função JQueryValor, não dispensa o registro no html ?

    Obrigado

    quinta-feira, 16 de outubro de 2014 15:38