我在 .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” 图例显示“销售”
最佳答案
我能弄明白的唯一方法就是不设置
chrt.Series[0].IsValueShownAsLabel = true;
然后在系列级别手动将标签和图例文本设置为我想要的。可以使用关键字#VALY 和#VALX,这样它将在运行时替换为值,并且通过将格式字符串放在其后的大括号内,它会应用格式。因此,在这种情况下,美元符号 , 在每一个千位分隔符处,如果没有任何内容,则用 0 替换小数点左侧,如果没有任何内容,则用 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
关于c# - 将 .asp.net 图表标签更改为值,然后仅格式化图表,而不是图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20204007/