Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

WebMasterJr

[Resolvido] Gravar no Banco sem a mascara

Recommended Posts

Boa tarde pessoal, estou aqui para pedir a ajuda de voces sobre um probleminha que estou tendo com o meu formulario.

 

Tenho um formulario para inserir valores (R$) double e o campo no meu formulario tbm no banco é double, portanto ele não interpreta a virgula, e eu preciso gravar esses dados la dentro só que por meio do C# eu nao consegui e estou tentando fazer uma função para resolver esse problema.

 

Alguem ja passou por isso e poderia me ajudar??

 

Trabalho com VS2010 e uso Ajax, JQuery e estou usando tbm o TELERIK para aqueles que não conhecem é um otimo ajudante.

 

Muito Obrigado e agradeço aqueles que posteriormente me ajudarem.

Compartilhar este post


Link para o post
Compartilhar em outros sites
inserir valores (R$) double e o campo no meu formulario tbm no banco é double,

com a tua linguagem c#, remova os pontos. Depois troque a virgula por ponto.

 

e ai pronto, você terá um valor double. Só inserir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tentei fazer isso mais nao deu certo... foi a primeira coisa que eu tentei....

 

if (Controller.campoR$.ToString() != string.Empty)
           {
               Controller.campoR$= Convert.ToDouble(Controller.campoR$.Replace(".","").Replace(',','.'));
           }

 

Usei essas linhas e depois inseri mais mesmo assim nao deu certo. Essa é a parte do controller pois uso MVC.

Compartilhar este post


Link para o post
Compartilhar em outros sites

e deu algum erro ? qual ?

 

pq não deu certo ?

 

se você pedir um output dessa variavel Controller.campoR$ como sai ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao deu erro nenhum apenas nao gravou nada... grava "ZERO" como se nao tivesse enviado nada para o banco...

 

Estou tentando pesquisar na net mais aparece sempre o mesmo exemplo que eu passei...

 

 

Só que eu tenho que fazer atravez de uma função... porque o campo do formulario recebe texto e o banco espera um double e no controller nao esta fazendo a conversão.... não consigo mais pensar em nada....

Compartilhar este post


Link para o post
Compartilhar em outros sites

e o output que pedi ? está correto ?

 

tem q ir debugando cara, e ver se realmente você está inserindo no banco depois ou antes da conversão.

ou se a conversão foi feita corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora ta dando erro no primeiro replace... affz....

 

 

FROID...

 

Acabei de ver esse exemplo e tentei implementar para poder usa-lo mais não deu certo... =/

 

 

function formata(ValorMensal, mask, evt) {
           if (document.all) {
               key = evt.keyCode;
           }
           else {
               key.evt.which;
           }
           if (key == 8) {
               return true;
           }
           string = ValorMensal.value;
           i = string.length;

           if (i < mask.length) {
               if (mask.charAt(i) == '?') {
                   return (key > 47 && key < 58)
               }
               else {
                   if (mask.charAt(i) == '!') {
                       return true;
                   }
               }
               for (c = i; c < mask.length; c++) {
                   if (mask.charAt(c) != '?' && mask.charAt(c) != '!') {
                       ValorMensal.value = ValorMensal.value + mask.charAt(c);
                   }
                   else if (mask.charAt(c) == '!') {
                       return true;
                   }
                   else {
                       return (key > 47 && key < 58);
                   }
               }
           }
           else {
               return false;
           }
       }

 

Ta osso d+

Compartilhar este post


Link para o post
Compartilhar em outros sites

function trocarVirgula() {
               var valor = $("#@Html.TextBoxFor(model => model.valorReal)");
               if (valor.val() != '') {
                   valor.val() = valor.val().replace(".", '').replace(",", ".");
                   return true;
               } else {
                   return false;
               }
          }

 

Ta assim meu JavaScript... e no meu botão ta chamando ele com onsubmit="trocarVirgula()", porque se nao falidar o formulario não é para inserir no banco... mais ta inserindo e errado ainda por cima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara.. impossível você atribuir algo a um método, concorda ?

 

o método .val() é getter e setter ao mesmo tempo.

 

 

var sem_virgula = valor.val().replace(".", '').replace(",", "."); 
valor.val( sem_virgula );

porém, continuo dizendo q seria melhor e mais consistente você fazer essa operação no server-side.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao entendi muito bem o que voce quiz dizer mais como estou usando o textbox do telerik e esta sendo criado e recebendo o id dinamicamente por isso dakela linha de programação:

 

var valor = $("#@Html.TextBoxFor(model => model.valorReal)");

 

E depois logo abaixo estou vendo se tem algum valor dentro do campo para poder fazer a verificação e me dar um return...

 

Não estou entendendo o que voce esta falando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu disse que:

valor.val() = valor.val().replace(".", '').replace(",", ".");

isso não existe.

 

olhe o correto:

var sem_virgula = valor.val().replace(".", '').replace(",", "."); 
valor.val( sem_virgula );

 

 

entendeu ?

 

 

aperte Ctrl+Shif+J no Firefox, e debugue teu js.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meus amigos... depois de 3 dias pesquisando na web e com professores consegui resolver o problema

 

var sem_virgula = valor.val().replace(".", ''); 
valor.val( sem_virgula );

 

Se voces compararem com o codigo acima notaram que esta sem o ultimo replace.

 

 

EXATAMENTE, desde o começo estava certa a minha logica apenas que nao tem o ultimo replace, por si só ele tira a virgula por ponto.

 

O resultado final ficou:

 

$(function () {
           $("#form").submit(function () {
               var variavel3= $("#@Html.FieldIdFor(modelo => modelo.variavel1)");
               var sem_virgula = variavel2.val().replace(".", "");
               if (sem_virgula != '') {
                   variavel3.val(sem_virgula);
                   alert(variavel3.val());
               } else {
                   return false;
               }
           });
       });

 

A quem tiver essa mesma duvida espero ter ajudado.

 

 

E obrigado Willian Bruno por tudo o que me ajudou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.