【问题标题】:Change an .asp.net chart label to value and then format only chart, not legend将 .asp.net 图表标签更改为值,然后仅格式化图表,而不是图例
【发布时间】:2013-11-26 23:22:13
【问题描述】:

我在 .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”图例显示“销售额”

【问题讨论】:

    标签: c# asp.net aspchart


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多