none
Problema con decimales en un datagrid RRS feed

  • Pregunta

  • Hola

    Intento ponerle un formato a las celdas

     

     Columna.DefaultCellStyle.Format = "c" pero me aparece con dos decimales pero con el simbolo de la moneda y yo solo quiero que aparezca algo así: 19,29 no 19,29€, con esto bastará para que al editar no deje introducir mas de dos decimales=?

     


    martes, 31 de mayo de 2011 17:24

Respuestas

Todas las respuestas

  • hola

    usa

    Columna.DefaultCellStyle.Format = "N2"

     

    entonces sera un formato nuemrico de dos decimales

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 31 de mayo de 2011 17:27
  • Ok,

    pero ya los datos me vienen con dos decimales, el problema es cuando edito esa celda me deja introducir más de dos decimales y eso no quisiera pq al grabar seguro me dará problemas ya que en la tabla solo acepta 2.

    martes, 31 de mayo de 2011 17:29
  • puede redondera al momento de grabar

    Math.Round(valor, 2)

    entonces ese valor se lo pasas a la query y ya no importa si el usuario ingresa 2, 4 o mas decimales


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 31 de mayo de 2011 19:47
  • Hola

    Esto me solucionaría al momento de grabar pero no hay alguna forma de que cuando el usuario este editando las cantidades no deje introducir más de 2 decimales en que evento lo haría?, ya he puesto en el load el formato de esa columna con columna.DefaultCellStyle.Format = "N2" .

    Muchas gracias.

    miércoles, 1 de junio de 2011 13:25
  • el tema es que vas a tener que implementar algo como esto

    Cómo detectar la tecla pulsada en una celda del control DataGridView

    o sea controlar el keypress de la celda para validar que se ingresen numeros y luego el signo de puntuacion

    creo que dejar que ingrese el usaurio cualqueir info y luego validarlo es mucho mas simple, es mas podrias usar el evento Validating para redodnear y cambiar el valor luego de ingresado

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 1 de junio de 2011 13:33
  • Hola

    He estado revisando pero por ejemplo cargando de la bd , me carga 24,50

    y yo editando ingreso 21,255

    con el dtg.CurrentCell obtengo el 24,50,¿ Cómo obtengo el valor de lo que estoy ingresando (21,255) ?porque en el KeyPress solo obtengo la tecla pero para calcular el número de decimales no me serviría saber la tecla presionada sino todo el número ingresado, es decir el nuevo.

     

     

    miércoles, 1 de junio de 2011 14:06
  • Tienes que Darle Formato a las columnas de ti grilla

     tuGrid.Columns("Columna").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
    tuGrid.Columns("Coluna").DefaultCellStyle.Format = "##,##0.00"
    
    Con eso la columna te mostrara 0.00 y alineado a la derecha
    y si introducres 1.258 te va a dejar 1.26 pero si quieres 4 decimales, el campo de la tabla debe tener 4 y el formato seria 
    "##,##0.0000" y si introduces 1.2561 te lo deja igual.
    
    
    miércoles, 1 de junio de 2011 14:31

  • Puedes usar el evento DataGridView_CellValidating

    posicionas en la celda con e.ColumnIndex

    DataGridView.CurrentCell.Value contiene el valor antes de actualizarse

    y DataGridView.CurrentCell.EditedFormattedValue contiene el valor escrito en la celda y por el que va a ser sustituido DataGridView.CurrentCell.Value

    Private Sub DataGridView_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGridView.CellValidating
    If e.ColumnIndex = 2 Then
     ' Puedes poner cualquier comparación entre ellos o por separado
     If CType(sender, DataGridView).CurrentCell.EditedFormattedValue <> CType(sender, DataGridView).CurrentCell.Value Then            
     ' . . . 
     End If
    End If
    End Sub
    

    Si te vale marca la respuesta como válida. Saludos
    viernes, 3 de junio de 2011 17:29