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

se pierde el decimal al hacer un postback

Estas en el tema de se pierde el decimal al hacer un postback en el foro de .NET en Foros del Web. que honda rootk checate esta tonteria o bug que mesta pasando al ahcer un post back para actualizar datos que se enlazan en mi datalist ...
  #1 (permalink)  
Antiguo 25/10/2004, 12:45
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 2 meses
Puntos: 0
se pierde el decimal al hacer un postback

que honda rootk checate esta tonteria o bug que mesta pasando

al ahcer un post back para actualizar datos que se enlazan en mi datalist y algunos de estos estan en texbox, hay un texbox que es para actualizar cantidades numericas $,, me esta pasando algo raro, resulta que cuando quiero actualizar esos campos para hacer un postbox se pierde mi punto decimal

si yo declaro esto y lo guardo(edito) en mi tabla db ( el cual el campo lo tengo declarado como real) o imprimo para probar se pierde el punto decimal
osea que si yo desde mi texbos hago esto 89.56, se enviara 8956

Sub edi_data(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs )

Dim ventaninos as Decimal = CType(e.Item.FindControl("venta_editni"), TextBox).Text


pero si hago esto
Dim ventaninos as string = CType(e.Item.FindControl("venta_editni"), TextBox).Text

lo imprime o guarda ... pero tengo que poner 89.88 ose la cantidad con puntos decimales

ahora pasa otra cosa que en mi datalist esos campos numeros osea donde van cantidades los cuales en mi tabla de bd los declare como real, las cantidades no aparecen con puntos si no con comas osea 98,78 cuando deberia de ser 98.78 y lo peor es que estas cantidades siguen apareciendo en mi texbox con puntos y comas

Código:
<datalist><asp:TextBox id="venta_editni" Text='<%#Container.DataItem("costoninos")%>' runat="server" Width="70px"></datalist>
y al querer editar algun otro campo que no tenga nada que ver con estos me marca error de que nvarchar no se puede convertir en real por estos campos ...
pero como no lo puede convertir si lo que tengo en mi base de datos es 89.89 y en el texbox me lo pone 89,89 osea esa coma la marca como un caracter no com punto decimal...

la verdad ya tenia resuelto este problema pero quien sabe que ha pasado..

alguien tiene una solucion para esas comas
__________________
solo firma
  #2 (permalink)  
Antiguo 25/10/2004, 12:54
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 2 meses
Puntos: 0
entre a mi tabla y le cambie a float en tipo de dato en el campo y me sigue marcando en mi salida datalist

<asptexbox text='89,89'>

__________________
solo firma
  #3 (permalink)  
Antiguo 25/10/2004, 12:59
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
MM.. una manera rápida para no meterte el broncas es jugar con el replace.

Ejemplo:

Cita:
las cantidades no aparecen con puntos si no con comas osea 98,78 cuando deberia de ser 98.78
Te podría quedar:

Cita:
...
<asp:TextBox id="venta_editni" Text='<%# Ctype(Container.DataItem("costoninos"),String).Replace(",",".")%>' runat="server" Width="70px">
..
Y cuando hagas el update te podría quedar así:
Cita:
pero tengo que poner 89.88 ose la cantidad con puntos decimales
Podría ser al revés.

Cita:
89.88.Replace(".",",")
Espero me hayas entendido.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 25/10/2004, 17:05
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 2 meses
Puntos: 0
si comprendi, pero que pasa cuando tengo una cantidad???

10,500.58

se ocuapan los formar numbers no tienes por ahi un ejemplo
__________________
solo firma
  #5 (permalink)  
Antiguo 25/10/2004, 18:39
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 2 meses
Puntos: 0
ok hice este ejemplo y ya estoy encontrado la falla es que mi sistema es windows 2000 pro en español jajajaja...

y haciendo este ejemplo

<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
double price = 4.56;
DateTime rightNow = DateTime.Now;
int bigNumber = Int32.MaxValue;


lblPrice.Text = String.Format("{0:c}", price);
lblTime.Text = String.Format("{0:T}", rightNow);
lblDate.Text = String.Format("{0:d}", rightNow);
lblBigInt.Text = String.Format("{0:#,###}", bigNumber);
}
</script>

<html>
<body>

The price is: <asp:label runat="server" id="lblPrice" />
<p>
The time is: <asp:label runat="server" id="lblTime" />
<p>
The date is: <asp:label runat="server" id="lblDate" />
<p>
The biggest 32-bit integer is
<asp:label id="lblBigInt" runat="server" />
</body>
</html>
me da esto..

The price is: 5 pta
The time is: 19:32:23

The date is: 25/10/2004

The biggest 32-bit integer is 2.147.483.647

ahora ya vi mi configuracion en y todo lo tengo para estados unidos, pero aun asi tengo esto problema me paree que hay una clase llamada system.global que forsas al sistema a poner en cierto lenguaje
no??
__________________
solo firma
  #6 (permalink)  
Antiguo 26/10/2004, 08:07
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
pero aun asi tengo esto problema me paree que hay una clase llamada system.global que forsas al sistema a poner en cierto lenguaje
no??
Así es.. de hecho si quieres que afecte a todo tu proyecto lo puedes hacer desde el web.config. (ejemplo con México)

Cita:
<globalization culture="es-MX" uiCulture="es-MX" />
Ahora que si lo quieres hacer para una página en especifico:

Pones ésto hasta arriba: (donde defines tu page)

Cita:
<%@ Page Culture="es-MX" UICulture="es-MX" Language="vb" Codebehind="WebForm2.aspx.vb" ..... %>
La tercea forma la puedes hacer por código:

Cita:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim strCulture As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("es-MX")
System.Threading.Thread.CurrentThread.CurrentCulture = strCulture
..
...
End Sub
Salu2
  #7 (permalink)  
Antiguo 26/10/2004, 08:11
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 2 meses
Puntos: 0
super... ayer estaba investigando esto.. gracias por ponermelo mas ejemplificado
__________________
solo firma
  #8 (permalink)  
Antiguo 27/12/2006, 15:53
 
Fecha de Ingreso: diciembre-2006
Mensajes: 1
Antigüedad: 17 años, 4 meses
Puntos: 0
String Format

HOLA A TODOS!!!:
FHER:

quiero pedir ayuda sobre string format, estoy trabajando con unos textos numericos en vbnet, y tengo el texto de la siguiente forma:

txtValor.Text = 150038
con string format lo pongo de esta forma:
txtValor.Text = String.Format("{0:0,0.00}",txtValor.Text )

150,038.00, osea con comas de miles y dos decimales, ahora, mi problema es al momento de guardar necesito que el texto regrese a su modo original 150038, como puedo hacer esto???

alguien me puede ayudar? o sabe como hacerlo ? gracias

Cita:
Iniciado por Fher Ver Mensaje
ok hice este ejemplo y ya estoy encontrado la falla es que mi sistema es windows 2000 pro en español jajajaja...

y haciendo este ejemplo

<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
double price = 4.56;
DateTime rightNow = DateTime.Now;
int bigNumber = Int32.MaxValue;


lblPrice.Text = String.Format("{0:c}", price);
lblTime.Text = String.Format("{0:T}", rightNow);
lblDate.Text = String.Format("{0:d}", rightNow);
lblBigInt.Text = String.Format("{0:#,###}", bigNumber);
}
</script>

<html>
<body>

The price is: <asp:label runat="server" id="lblPrice" />
<p>
The time is: <asp:label runat="server" id="lblTime" />
<p>
The date is: <asp:label runat="server" id="lblDate" />
<p>
The biggest 32-bit integer is
<asp:label id="lblBigInt" runat="server" />
</body>
</html>
me da esto..

The price is: 5 pta
The time is: 19:32:23

The date is: 25/10/2004

The biggest 32-bit integer is 2.147.483.647

ahora ya vi mi configuracion en y todo lo tengo para estados unidos, pero aun asi tengo esto problema me paree que hay una clase llamada system.global que forsas al sistema a poner en cierto lenguaje
no??
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:09.