Principales respuestas
Problemas con coma decimal - Globalización.

Pregunta
-
Hola:
En el formulario ingreso la cantidad con la "," decimal (ej. 150,03). Y la página he puesto unas etiquetas para que me de la información de culture, y aparecen con los datos Culture: es-ES y UICulture: es-ES.
La conversión la hago con el siguiente código:
TextBox _tbPrecioTmp = (TextBox)linea.FindControl("tbPrecio"); decimal _precio = Convert.ToDecimal(_tbPrecioTmp.Text);
En _tbPrecioTmp.Text aparece el importe con el "." decimal, en vez de con la ",". (Ej. 150.03)
Y en _precio aparece el importe sin decimales (ej. 15003)
Le estuve dando vueltas y he mirado por internet y aunque en el web.config he puesto el siguiente código:
<system.web> <globalization uiCulture="es" culture="es-ES" />
No me resuelve el problema y quita los decimales convirtiéndolos en enteros.
Si alguien sabe que más puedo hacer, estaría agradecido.
Un Saludo.
Respuestas
-
Hola:
Probando, he quitado el siguiente código htlm:
TextMode="Number" step="0.01"
Y funciona perfectamente. El problema es que con dichos parámetros controlaba que solamente se pudiesen meter números con dos decimales y al quitar esto, se puede meter cualquier carácter, por lo que sale error.
Esta era la única forma que he visto de controlar la entrada de datos, por lo que no se como puedo controlarla ahora.
Un Saludo.
- Marcado como respuesta elturle martes, 23 de junio de 2015 21:36
-
hola
>>Y funciona perfectamente. El problema es que con dichos parámetros controlaba que solamente se pudiesen meter números con dos decimales y al quitar esto, se puede meter cualquier carácter, por lo que sale error.
claro el tema es que aplicas atributos de HTML5 y esto aplica la cultura de EEUU
quizas debas usar controles con mascara de jquery para aplicar formato numerico
salidos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta elturle martes, 23 de junio de 2015 21:36
Todas las respuestas
-
Tienes que indicarle que utilice la cultura para realizar la conversión:
TextBox _tbPrecioTmp = (TextBox)linea.FindControl("tbPrecio"); decimal _precio = Convert.ToDecimal(_tbPrecioTmp.Text, System.Threading.Thread.CurrentThread.CurrentUICulture);
Píldoras .NET
Artículos, tutoriales y ejemplos de código .NETPíldoras JS
Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ... -
hola
>>En _tbPrecioTmp.Text aparece el importe con el "." decimal, en vez de con la ",". (Ej. 150.03)
me parece muy raro lo que comentas, estas seguro que en el textbox has ingresado el importe con una coma como separador de decimales ?
porque el textbox como control solo representa un string, este no cambia la informacion que el usuario ingreso
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
Hola:
Asier: He probado lo que me has dicho y sigue haciendo lo mismo. Y creo que tiene el mismo funcionamiento, porque ya en el web.config le he puesto el tema cultural.
Leandro: Como puedes observar en las imágenes de abajo, una es donde introduzco los datos, donde se ve que se hace mediante como, y la otra es una inspección del textbox, donde aparece ya con punto.
Texto introducido con coma:
Inspección de Textbox donde aparece con el punto:
Un Saludo.
-
Y entiendo que es un control TextBox normal.
¿En qué tipo de contenedor se encuentra? ¿Qué control es "lista"?
Píldoras .NET
Artículos, tutoriales y ejemplos de código .NETPíldoras JS
Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ... -
Hola:
El textbox está dentro de un gridview y el código que estoy utilizando e el siguiente:
<asp:TemplateField HeaderText="Precio" SortExpression="Precio"> <ItemTemplate> <asp:TextBox ID="tbPrecio" runat="server" Text='<%# Bind("Precio") %>' TextMode="Number" step="0.01" ></asp:TextBox> </ItemTemplate> </asp:TemplateField>
Un Saludo.
-
Hola:
Probando, he quitado el siguiente código htlm:
TextMode="Number" step="0.01"
Y funciona perfectamente. El problema es que con dichos parámetros controlaba que solamente se pudiesen meter números con dos decimales y al quitar esto, se puede meter cualquier carácter, por lo que sale error.
Esta era la única forma que he visto de controlar la entrada de datos, por lo que no se como puedo controlarla ahora.
Un Saludo.
- Marcado como respuesta elturle martes, 23 de junio de 2015 21:36
-
hola
>>Y funciona perfectamente. El problema es que con dichos parámetros controlaba que solamente se pudiesen meter números con dos decimales y al quitar esto, se puede meter cualquier carácter, por lo que sale error.
claro el tema es que aplicas atributos de HTML5 y esto aplica la cultura de EEUU
quizas debas usar controles con mascara de jquery para aplicar formato numerico
salidos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta elturle martes, 23 de junio de 2015 21:36
-