将.asp.net图表标签更改为值,然后仅格式化图表,而不是图例

时间:2013-11-25 21:47:00

标签: c# asp.net aspchart

我在.asp.net上有一个名为chrt的饼图。我希望使用货币格式在图表中显示值而不是标签。我希望标签显示在图例中。我执行以下操作并获取显示在我的图表上的值而不是标签,并且标签仍显示在图例中。

chrt.Series[0].IsValueShownAsLabel = true;

示例:

图表显示“12345.678”图例显示“销售”

我现在需要的是让图表以美元显示。

如果我执行以下操作,它会在图表上将格式更改为货币,但遗憾的是会使用货币格式的值替换图例中的标签。

foreach (Series b in chrt.Series)
        {                            
            foreach (DataPoint c in b.Points)
            {                 
                //Sets both legend and chart value
                c.Label = c.YValues[0].ToString("C");                                   
            }
        }

示例:

图表显示“$ 12345.68”图例显示“$ 12345.68”

我也尝试了下面的代码,但它将图例设置为值并将其格式化为货币,将图表上的值保留为原样。

foreach (Series b in chrt.Series)
        {                            
            foreach (DataPoint c in b.Points)
            {            
               //Sets just the legend to the dollar values
               c.AxisLabel = c.YValues[0].ToString("C");
            }
         }

示例:

图表显示“12345.678”图例显示“$ 12345.68”

我希望它显示的是

图表显示“$ 12345.68”图例显示“销售”

1 个答案:

答案 0 :(得分:4)

我能解决这个问题的唯一方法就是不设置

chrt.Series[0].IsValueShownAsLabel = true;

然后手动将标签和图例文字设置为我想要的系列级别。可以使用关键字#VALY和#VALX,因此它将在运行时替换为值,并将格式字符串放在其后的花括号中,它将应用格式。因此,在这种情况下,一个美元符号,每千个分隔符,并替换为小数点左边的0,如果没有任何内容,如果没有任何内容,则替换为右,但只有最多2个小数位。

foreach (Series b in chrt.Series)
        {

            b.Label = "#VALY{$#,##0.00}";           
            b.LegendText = "#VALX";
        }

示例:

12345.678变为$ 12,345.67

.1234变为$ 0.12

1234变为$ 1,234.00