Foros del Web » Programación para mayores de 30 ;) » .NET »

cambiar punto por coma

Estas en el tema de cambiar punto por coma en el foro de .NET en Foros del Web. Hola buenas, tengo un gridview con unos campos que son textbox.En ellos van numeros que son decimales o enteros.El ultimo textbox, me realiza la suma ...
  #1 (permalink)  
Antiguo 27/01/2010, 11:26
 
Fecha de Ingreso: julio-2009
Mensajes: 60
Antigüedad: 14 años, 9 meses
Puntos: 0
cambiar punto por coma

Hola buenas, tengo un gridview con unos campos que son textbox.En ellos van numeros que son decimales o enteros.El ultimo textbox, me realiza la suma de los otros campos.
El problema es que realiza la suma si se pone numeros con puntos y no con comas y me gustaria saber como hacerlo para que me lo sume con comas.
aqui os dejo la funcion javascript que me realiza la suma e javascript.
Espero alguna solucion muchas gracias.

function recalcular_totales(i)
{

var a;
var b=0;
var c=0;
var d=0;
var e=0;
var j="hola";
//esto se realiza porque el ctl del la caja de texto empiza en 02
i=parseInt(i)+2;
//si es menos de 10 lo que pasa es que pone 02,03...a partir de 10 es normal
if (i<10)
j="0"+i.toString();
else
j=i;

//recupero el valor del textbox,por medio del indice.

a=parseFloat(document.getElementById("ctl00_Conten tPlaceHolder1_GridView_productos_ctl"+j+"_txtAnima l").value);
b=parseFloat(document.getElementById("ctl00_Conten tPlaceHolder1_GridView_productos_ctl"+j+"_txtRumia ntes").value);
c=parseFloat(document.getElementById("ctl00_Conten tPlaceHolder1_GridView_productos_ctl"+j+"_txtPorci no").value);
d=parseFloat(document.getElementById("ctl00_Conten tPlaceHolder1_GridView_productos_ctl"+j+"_txtCebo" ).value);
e=document.getElementById('ctl00_ContentPlaceHolde r1_GridView_productos_ctl'+j+'_txtTotal');


if (isNaN(a))
a=0;
if (isNaN(b))
b=0;
if (isNaN(c))
c=0;
if (isNaN(d))
d=0;

e.value=Math.round((parseFloat(a+b+c+d)*100))/100;

}
  #2 (permalink)  
Antiguo 27/01/2010, 13:25
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: cambiar punto por coma

Creo que eso tiene que ver con la configuracion del idioma de la maquina que uses.

No se si es la mejor respuesta pero puedes probar.
  #3 (permalink)  
Antiguo 28/01/2010, 06:30
 
Fecha de Ingreso: julio-2009
Mensajes: 60
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cambiar punto por coma

Eso creo que es independiente, lo que traigo de la base de datos son numeros con comas y a esos los tengo que sumar por eso tengo que saber como sumar con comas en vez de con puntos.
  #4 (permalink)  
Antiguo 28/01/2010, 06:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: cambiar punto por coma

La base de datos (si eso es lo que realmente usas), no trae comas ni puntos. trae Doubles o Decimals. Las características de ambos tipos no se definen por el caracter, sino a nivel de números binarios.
Tu problema es la interpretación que hace o el conector (cosas de regionalización), o la aplicación (también regionalización) para representar ese número.
En cualquier caso, lo que debes hacer es usar el método System.Convert, utilizando la regionalziación como parámetro de la conversión, y evitar que en la consulta, el valor numérico retorne de la base como un string...
Investiga un poco el tema de la clase CultureInfo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 09/02/2010, 05:11
 
Fecha de Ingreso: julio-2009
Mensajes: 60
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: cambiar punto por coma

Ya esta solucionado lo que se realiza es un replace de la coma por el punto para que realice la operacion y despues se vuelve a convertir el punto por la coma.
Muchas gracias a todos.
Pongo aqui la realizacion de la funcion para que la tengais por si la necesitais algun dia.

function recalcular_totales(i)
{

var a;
var b=0;
var c=0;
var d=0;
var e=0;
var j="hola";
//esto se realiza porque el ctl del la caja de texto empiza en 02
i=parseInt(i)+2;
//si es menos de 10 lo que pasa es que pone 02,03...a partir de 10 es normal
if (i<10)
j="0"+i.toString();
else
j=i;

//recupero el valor del textbox,por medio del indice.
var datoa = document.getElementById("ctl00_ContentPlaceHolder1 _GridView_productos_ctl"+j+"_txtAnimal").value;
datoa=datoa.replace(",",".");
var a=parseFloat(datoa);

var datob=document.getElementById("ctl00_ContentPlaceH older1_GridView_productos_ctl"+j+"_txtRumiantes"). value;
datob=datob.replace(",",".");
var b= parseFloat(datob);

var datoc=document.getElementById("ctl00_ContentPlaceH older1_GridView_productos_ctl"+j+"_txtPorcino").va lue;
datoc=datoc.replace(",",".");
var c= parseFloat(datoc);

var datod=document.getElementById("ctl00_ContentPlaceH older1_GridView_productos_ctl"+j+"_txtCebo").value ;
datod=datod.replace(",",".");
var d=parseFloat(datod);

e=document.getElementById('ctl00_ContentPlaceHolde r1_GridView_productos_ctl'+j+'_txtTotal');



/*
a=parseFloat(document.getElementById("ctl00_Conten tPlaceHolder1_GridView_productos_ctl"+j+"_txtRumia ntes").value);
b=parseFloat(document.getElementById("ctl00_Conten tPlaceHolder1_GridView_productos_ctl"+j+"_txtRumia ntes").value);
c=parseFloat(document.getElementById("ctl00_Conten tPlaceHolder1_GridView_productos_ctl"+j+"_txtPorci no").value);
d=parseFloat(document.getElementById("ctl00_Conten tPlaceHolder1_GridView_productos_ctl"+j+"_txtCebo" ).value);
e=document.getElementById('ctl00_ContentPlaceHolde r1_GridView_productos_ctl'+j+'_txtTotal');
*/
//a=a.Replace('.',',');
//a = a.replace(/./g,",")

if (isNaN(a))
a=0;
if (isNaN(b))
b=0;
if (isNaN(c))
c=0;
if (isNaN(d))
d=0;

e.value=Math.round((parseFloat(a+b+c+d)*100))/100;
//e.value=(a+b+c+d);

//e.value=parseFloat(a+b+c+d);


a=a.toString().replace(".",",");
b=b.toString().replace(".",",");
c=c.toString().replace(".",",");
d=d.toString().replace(".",",");
e.value = e.value.toString().replace(".",",");

//viewstate("modificado")=1;
// aqui lo que hago es modificar el valor del campo oculto para que al darle al salir
// me pregunte si quiero guardar los cambios
document.getElementById('ctl00_ContentPlaceHolder1 _HiddenField_modificado').value=1;

}
  #6 (permalink)  
Antiguo 09/02/2010, 05:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: cambiar punto por coma

Yo insisto en que has encarado al el problema. Tienes que gestionarlo a través de la regionalización de la aplicación y no haciendo conversiones y reconversiones que no tienen justificación programática.
O tienes la tabla de la base mal creada, o tienes problemas en la toma de datos en la base, o bien tienes problemas con el conector. Los números con decimales sólo pueden llegar como Doubles o Decimals. Si te están entrado de otra forma es porque hay un defecto en alguna parte.
Ningún programa que use decimales hace esas conversiones, ergo, esas conversiones son siempre innecesarias.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 09/02/2010, 07:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: cambiar punto por coma

Buscando apenas un poco en Google, encontré este caso de regionalización (Globalization) administrada con JavaScript que, creo, deberías leer con atención.
Lo que quiero decir con tanta insistencia es que cuando programas, no es suficiente que un código funcione, además debe ser efectivo y eficiente. Si no lo es, tarde o temprano se paga con degradación de la perfomance.

Globalization with Javascript and Xslt
Globalization And Localization In ASP.NET AJAX
Handling TimeZone Information In ASP.NET
Script Globalization and Localization
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: coma, punto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:29.