2013-11-25 37 views
1

我在.asp.net中有一個名爲chrt的餅圖。我希望這些值而不是標籤顯示在貨幣格式的圖表中。我希望標籤顯示在圖例中。我執行以下操作並將值顯示在我的圖表上而不是標籤上,並且標籤仍顯示在圖例中。將.asp.net圖表標籤更改爲值,然後僅格式化圖表,而不是圖例

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」 圖例顯示 「銷售」

回答

3

我能想出來的唯一方法就是不設置

chrt.Series[0].IsValueShownAsLabel = true; 

然後手動將label和legendtext設置爲我想要的系列級別。可以使用關鍵字#VALY和#VALX,以便在運行時將其替換爲值,並將格式字符串放在花括號後面,然後應用格式。因此,在這種情況下,美元符號與每隔千位分隔符並在小數點左邊替換爲0,如果沒有任何內容,則替換爲0,如果沒有任何內容但只有2位小數位。

foreach (Series b in chrt.Series) 
     { 

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

實施例:

12345.678變爲$ 12,345.67

0.1234變爲$ 0.12

1234變爲$ 1,234.00