2

.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」を表示 凡例は「売上高」を表示

4

1 に答える 1

6

私がこれを理解できる唯一の方法は、設定しないことです

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 になります

于 2013-11-26T15:22:13.450 に答える