none
Como Dar Formato Personalizado de Moneda en un DatagridView RRS feed

  • Pregunta

  • Hola a Todos.

    Estoy trabando en Vb.Net 2008 y tengo un DataGridView que contienes columnas con valores numéricos normales. Mi intensión es darle formato de moneda con su respectivo Símbolo.

    Aplique Este Solución:

    Dim Simbolo as String

    Simbolo = $ 'S/. ,

    MiDataGridView.Columns.Item("ValorCompra").DefaultCellStyle.Format = Simbolo & "###,##0.00"

    Hasta ahí me muestra el formato que quiero. El problema es que cuando Edito una Celda de esa columna me da un ERROR que es mostrado por el datagridtview indicando que el formato de entrada es incorrecto.

    ¿Alguna Otra forma de dar formato  personalizado de moneda sin ningún error de edición?

    Importe : El símbolo es indispensable.

    Espero una pronta respuesta Saludos DANNY ARANDA.

    viernes, 8 de octubre de 2010 17:11

Respuestas

  • "DannyArs" preguntó:

    > tengo un DataGridView que contienes columnas con valores numéricos
    > normales. Mi intensión es darle formato de moneda con su
    > respectivo Símbolo.
    >
    > Aplique Este Solución:
    >
    > MiDataGridView.Columns.Item("ValorCompra").DefaultCellStyle.Format = Simbolo & "###,##0.00"

    Hola:

    Si el formato se lo quieres asignar en tiempo de ejecución, mejor será que apliques ésta otra solución:

      ' Referenciamos la columna
      Dim column As DataGridViewColumn = DataGridView1.Columns("ValorCompra")

      ' Asignamos el formato de moneda con dos decimales
      column.DefaultCellStyle.Format = "C2"

    O si lo quieres hacer directamente:

      DataGridView1.Columns("ValorCompra").DefaultCellStyle.Format = "C2"

    Un saludo

     


    Enrique Martínez [MS MVP - VB]
    sábado, 9 de octubre de 2010 10:02
    Moderador
  • "Vhandor" preguntó:

    > como poder obtener el valor que se muestra en el detagrid
    > es decir con ese formato

    Hola:

    Una vez obtenido el valor de la columna del control DataGridView, tienes que formatear el valor para mostrarlo con el formato que deseas, en tu caso, en un formato de moneda:

        ' Obtenemos el valor de la columna Total de la fila
        ' actual del control DataGridView.
        '
        Dim value As Object = DataGridView1.CurrentRow.Cells("Total").Value
    
        ' Formateamos el valor con el símbolo monetario
        ' actualmente existente en la configuración
        ' regional de Windows.
        '
        Dim valorMonetario As String = String.Format("{0:C2}", value)
    
        MessageBox.Show(valorMonetario)
    


    NOTA: Si la respuesta te ha sacado de la duda, vótala como útil, ya que al no haber iniciado tú ésta conversación, no puedes marcarla como satisfactoria.

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    martes, 16 de agosto de 2011 21:09
    Moderador

Todas las respuestas

  • hola

    que muestre un error puede deberse a que estes realziando alguna operacion con el valor de la celda y este al tener el simbolo no pueda convertir a numerico

    por lo del formato creo que deberas usar el evento CellFormatting

    y alli en el evento de cada celda detectar cuando se trata de la columan de moneda y aplicar puntualmente el simbolo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 8 de octubre de 2010 17:32
  • en las propiedades de la columna existe una propiedad llamada Format donde le puedes indicar el formato de que utilizaras para mostrar el valor de la columna en caso seria Format = "C" <- que representa un valor monetario y utilizara el simbolo monetario segun la configuración regional del ordenador.

    Salu2,


    No le temas a la competencia, temele a tu propia incompetencia.
    viernes, 8 de octubre de 2010 18:05
    Moderador
  • "DannyArs" preguntó:

    > tengo un DataGridView que contienes columnas con valores numéricos
    > normales. Mi intensión es darle formato de moneda con su
    > respectivo Símbolo.
    >
    > Aplique Este Solución:
    >
    > MiDataGridView.Columns.Item("ValorCompra").DefaultCellStyle.Format = Simbolo & "###,##0.00"

    Hola:

    Si el formato se lo quieres asignar en tiempo de ejecución, mejor será que apliques ésta otra solución:

      ' Referenciamos la columna
      Dim column As DataGridViewColumn = DataGridView1.Columns("ValorCompra")

      ' Asignamos el formato de moneda con dos decimales
      column.DefaultCellStyle.Format = "C2"

    O si lo quieres hacer directamente:

      DataGridView1.Columns("ValorCompra").DefaultCellStyle.Format = "C2"

    Un saludo

     


    Enrique Martínez [MS MVP - VB]
    sábado, 9 de octubre de 2010 10:02
    Moderador
  • Reciba mis saludos me funciono muy bien la linea pero tengo la duda de como poder obtener el valor que se muestra en el detagrid es decir con ese formato muchas gracias

    martes, 16 de agosto de 2011 18:07
  • "Vhandor" preguntó:

    > como poder obtener el valor que se muestra en el detagrid
    > es decir con ese formato

    Hola:

    Una vez obtenido el valor de la columna del control DataGridView, tienes que formatear el valor para mostrarlo con el formato que deseas, en tu caso, en un formato de moneda:

        ' Obtenemos el valor de la columna Total de la fila
        ' actual del control DataGridView.
        '
        Dim value As Object = DataGridView1.CurrentRow.Cells("Total").Value
    
        ' Formateamos el valor con el símbolo monetario
        ' actualmente existente en la configuración
        ' regional de Windows.
        '
        Dim valorMonetario As String = String.Format("{0:C2}", value)
    
        MessageBox.Show(valorMonetario)
    


    NOTA: Si la respuesta te ha sacado de la duda, vótala como útil, ya que al no haber iniciado tú ésta conversación, no puedes marcarla como satisfactoria.

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    martes, 16 de agosto de 2011 21:09
    Moderador
  • EXCELENTE APORTE, TENÍA LA MISMA DUDA. GRACIAS POR RESOLVER MI DUDA!!!
    viernes, 2 de marzo de 2018 18:11
  • DataGridView1.Columns("ValorCompra").DefaultCellStyle.Format = "C2" Funciona perfectamente. Gracias
    sábado, 5 de mayo de 2018 15:49