2012-10-02 46 views
0

我正在使用Telerik RadChart繪製折線圖。除零值不顯示爲附件外,一切都正常。Telerik RadChart中不顯示零標籤

enter image description here enter image description here

是否有負責此行爲的外觀屬性?

我創建這樣的控制:

/// <summary> 
    /// builds the chart object 
    /// </summary> 
    /// <param name="chartSeriesItems">Series Items For index values</param> 
    /// <param name="chartAvrageSeriesItems">Avrage 2 seies items for start and end</param> 
    /// <returns></returns> 
    private RadChart BuildChart(List<ChartSeriesItem> chartSeriesItems, List<ChartSeriesItem> chartAvrageSeriesItems) 
    { 
     RadChart chart = new RadChart(); 

     chart.ID = "SparklineChart"; 
     chart.Width = 200; 
     chart.Height = 140; 
     chart.DefaultType = ChartSeriesType.Line; 
     chart.AutoLayout = true; 
     chart.ChartTitle.Visible = false; 

     chart.Appearance.Dimensions.Margins = ChartMargins.Parse("0px, 0px, 0px, 0px"); 
     chart.Appearance.Dimensions.Paddings = ChartPaddings.Parse("0px, 0px, 0px, 0px"); 
     chart.Appearance.Dimensions.AutoSize = true; 
     chart.Appearance.Dimensions.Height = 140; 
     chart.Appearance.Dimensions.Width = 200; 
     chart.Appearance.FillStyle.FillType = FillType.Solid; 
     chart.Appearance.FillStyle.MainColor = Color.Transparent; 
     chart.Appearance.Border.Visible = false; 


     chart.Legend.Visible = false; 

     chart.PlotArea.XAxis.Visible = ChartAxisVisibility.False; 
     chart.PlotArea.YAxis.Visible = ChartAxisVisibility.False; 
     chart.PlotArea.Appearance.Dimensions.Margins = ChartMargins.Parse("0px, 0px, 0px, 0px"); 
     chart.PlotArea.Appearance.Dimensions.Paddings = ChartPaddings.Parse("0px, 0px, 0px, 0px"); 
     chart.PlotArea.Appearance.FillStyle.FillType = FillType.Solid; 
     chart.PlotArea.Appearance.FillStyle.MainColor = Color.Transparent; 
     chart.PlotArea.Appearance.Border.Visible = false; 
     chart.PlotArea.EmptySeriesMessage.TextBlock.Appearance.AutoTextWrap = AutoTextWrap.True; 
     chart.PlotArea.EmptySeriesMessage.TextBlock.Text = Resources.Text.NoData; 


     //add series 
     ChartSeries scoreSeries = new ChartSeries(); 
     scoreSeries.Name = "Score"; 
     scoreSeries.DefaultLabelValue = "#Y" + FormatText.GetFormat(Global.GetUserProfile().NumbersFormat, Global.GetUserProfile().DecimalDigits).Replace("0:", ""); 
     scoreSeries.Appearance.FillStyle.MainColor = Color.Black; 
     scoreSeries.Appearance.LabelAppearance.Visible = true; 
     scoreSeries.Type = ChartSeriesType.Line; 
     scoreSeries.Items.AddRange(chartSeriesItems); 

     ChartSeries avrageSeries = new ChartSeries(); 
     avrageSeries.Name = "Avrage"; 
     avrageSeries.DefaultLabelValue = "#Y" + FormatText.GetFormat(Global.GetUserProfile().NumbersFormat, Global.GetUserProfile().DecimalDigits).Replace("0:", ""); 
     avrageSeries.Appearance.FillStyle.MainColor = Color.Gray; 
     avrageSeries.Appearance.LabelAppearance.Visible = true; 
     avrageSeries.Type = ChartSeriesType.Line; 
     avrageSeries.Appearance.LineSeriesAppearance.Width = 1; 
     avrageSeries.Items.AddRange(chartAvrageSeriesItems); 



     chart.Series.Add(scoreSeries); 
     chart.Series.Add(avrageSeries); 

     return chart; 
    } 

而且我加入這樣的價值觀:

ChartSeriesItem seriesItem = new ChartSeriesItem() 
          { 
           Name = "1", 
           XValue = index++, 
           YValue = 200 
          }; 
         totalYValue += 200; 
         seriesItem.Label.Appearance.FillStyle.MainColor = SAObjectsUtilities.GetColorFromStatus(SA_Globals.Status.Blue); 
         //seriesItem.Label.TextBlock.Appearance.TextProperties.Color = SAObjectsUtilities.GetLabelForeGroundColor(item.ScoreStatus); 
         seriesItem.Label.TextBlock.Appearance.TextProperties.Font = new Font(new FontFamily("Arial"), 7); 
         seriesItem.Label.TextBlock.Appearance.TextProperties.Color = Color.Black; 
         chartSeriesItems.Add(seriesItem); 




         ChartSeriesItem seriesItem2 = new ChartSeriesItem() 
         { 
          Name = "2", 
          XValue = index++, 
          YValue = 0 
         }; 
         totalYValue += 0; 
         seriesItem2.Label.Appearance.FillStyle.MainColor = SAObjectsUtilities.GetColorFromStatus(SA_Globals.Status.Red); 
         //seriesItem.Label.TextBlock.Appearance.TextProperties.Color = SAObjectsUtilities.GetLabelForeGroundColor(item.ScoreStatus); 
         seriesItem2.Label.TextBlock.Appearance.TextProperties.Font = new Font(new FontFamily("Tahoma"), 7); 
         seriesItem2.Label.TextBlock.Appearance.TextProperties.Color = Color.Black; 
         chartSeriesItems.Add(seriesItem2); 
+0

我用條形圖同樣的問題......你有沒有發現身邊工作? –

+0

是的,我想我已經找到了一個解決方法,通過重寫標籤並自己添加0。但實際上,我不確定是否很久以前,現在我無法訪問代碼庫 –

回答

0

如果有人遇到同樣的問題:

我結束了使用調整後的值(所以如果值爲0,我使用0.001),所以它實際上呈現的點(或酒吧在我的情況),然後使用我自己的字符串屬性爲標籤的值。

private static decimal MIN_GRAPH_VALUE = new decimal(0.001); 
    public decimal AjustedValue 
    { 
     get { return (_value.Equals(0)) ? MIN_GRAPH_VALUE : _value; } 
    } 
    public string StringValue 
    { 
     get { return _value.ToString("0.00%"); } 
    } 

而且檢測BarSeries綁定:

<telerik:BarSeries Name="My value" Stacked="false" DataFieldY="AjustedValue"> 
    <Appearance> 
     <FillStyle BackgroundColor="#92b622"></FillStyle> 
    </Appearance> 
    <LabelsAppearance ClientTemplate='#=dataItem.StringValue#' Position="OutsideEnd"> 
    </LabelsAppearance> 
</telerik:BarSeries>