none
Cambiar formato de datos en un chart (grafico tipo dona) RRS feed

  • Pregunta

  • Buenas tardes,

    Estoy trabajando con un grafico, el cual me presenta un top 5 de categorias con sus respectivos totales,

    bien, lo que quiero es mostrar el total en formato de moneda, por ejemplo el chart muestra: 4000, quiero que se muestre 4,000.00, pero no encuentro la manera de hacerlo en sus propiedades. dejo como llamo el procedimiento que llena el chart , por si conocen como hacerlo mediante codigo.

    private void Graficoingresosporcategoria()
            {
                using (SqlConnection cn = Claseconexion.ObtenerConexion())
                {
    
                    cn.Open();
                    cmd = new SqlCommand("IngresosPorCategoria", cn);
                    cmd.CommandType = CommandType.StoredProcedure;
    
                    dr = cmd.ExecuteReader();
                    while (dr.Read())
                    {
                        CategoriaI.Add(dr.GetString(0));
                        MontoTotalI.Add(dr.GetDecimal(1));
                    }
                    chart1.Series[0].Points.DataBindXY(CategoriaI, MontoTotalI);
                    dr.Close();
                    cn.Close();
                }
    
            }


    samuel

    miércoles, 16 de octubre de 2019 20:16

Respuestas

  • Hola Samuel, pues estube viendo también como pasar ese dato y consiguí pero sin la "," puede ser que sea un tema de cultura. al caso que utilizo Decimal.TryParse En el ejemplo agrego una columna a un DataTable y en esta efectúo la conversión a moneda tu lo adecúas a tu escenario si te sirve ej: 

                int Valor = 1000;    
                decimal Numero;
                NumberStyles Estilo = NumberStyles.Number | NumberStyles. AllowCurrencySymbol;
                CultureInfo culture =  CultureInfo.CreateSpecificCulture("eu-EU");
    
                for (int i = 0; i < Dtos.Rows.Count ; i++)
                {
                if(decimal.TryParse( Convert.ToString(Valor), Estilo, culture, out Numero))
                    {
                        Dtos.Rows[i][11] = Numero.ToString ("C2");
    
                    }
                        Valor += 1000;          
                }

    Si te sirve deberémos adecuarlo dentro del bloque If(reader......)  para convertir el valor, según sea su tipo

    Slaudos


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗


    • Editado Marcelo PF miércoles, 16 de octubre de 2019 23:55
    • Marcado como respuesta Samuel Ignacio jueves, 17 de octubre de 2019 12:48
    miércoles, 16 de octubre de 2019 23:54

Todas las respuestas

  • Hola Samuel Ignacio

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma,  te comparto a continuación el siguiente enlace

     

     https://docs.microsoft.com/es-es/sql/reporting-services/report-design/formatting-data-points-on-a-chart-report-builder-and-ssrs?view=sql-server-ver15

    Por favor indicame si te fue util, continuo buscando una mejor solucion.

     

    Gracias por usar los foros de MSDN.

     

    Pablo Rubio

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    miércoles, 16 de octubre de 2019 21:32
    Moderador
  • Buenas pablo,

    intente con algunas de las maneras que explican en la pagina, pero solo me funciono 1 (parcialmente)

    que era poner: VALY{C2}, la cual convierte el dato a tipo moneda, ejemplo 4000 = $4,000.00.

    pero me arroja  un error:

    error convirtiendo dato tipo string to int

    y me causa el siguiente problema:

    el chart tiene 2 secciones la grafica y la leyenda, la leyenda me la esta convirtiendo tambien a numerica, es decir,

    en vez de poner :

    Categoria          Monto

    Deporte            10,000.00

    PONE:

    Categoria          Monto

    10,000.00         10,000.00


    samuel

    miércoles, 16 de octubre de 2019 22:28
  • Hola Samuel, pues estube viendo también como pasar ese dato y consiguí pero sin la "," puede ser que sea un tema de cultura. al caso que utilizo Decimal.TryParse En el ejemplo agrego una columna a un DataTable y en esta efectúo la conversión a moneda tu lo adecúas a tu escenario si te sirve ej: 

                int Valor = 1000;    
                decimal Numero;
                NumberStyles Estilo = NumberStyles.Number | NumberStyles. AllowCurrencySymbol;
                CultureInfo culture =  CultureInfo.CreateSpecificCulture("eu-EU");
    
                for (int i = 0; i < Dtos.Rows.Count ; i++)
                {
                if(decimal.TryParse( Convert.ToString(Valor), Estilo, culture, out Numero))
                    {
                        Dtos.Rows[i][11] = Numero.ToString ("C2");
    
                    }
                        Valor += 1000;          
                }

    Si te sirve deberémos adecuarlo dentro del bloque If(reader......)  para convertir el valor, según sea su tipo

    Slaudos


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗


    • Editado Marcelo PF miércoles, 16 de octubre de 2019 23:55
    • Marcado como respuesta Samuel Ignacio jueves, 17 de octubre de 2019 12:48
    miércoles, 16 de octubre de 2019 23:54