忽略WPF图表控件中的空白值

时间:2015-07-15 11:55:40

标签: wpf wpf-controls

  

我正在开发包含WPF图表的WPF应用程序。我正面临一种情况。   我想通过忽略空值来仅为值绘制图表。   在应用程序中,数据包含在数据网格中,相同的数据将反映在图形中,但数据网格具有空白值(DBNull.Value)。   所以,我想通过忽略空白值来生成只包含值的图形。

这是我生成图表的代码。

for (int col = 1; col < dtGeneric.Columns.Count; col++)
{
    valueList = new List<KeyValuePair<string, double>>();
    gLineSeries= new System.Windows.Controls.DataVisualization.Charting.LineSeries();
    for (int row = 0; row < dtGeneric.Rows.Count - 1; row++)
    {
        if (string.IsNullOrEmpty(XaxisValue))
        {
            XaxisValue = "0";
        }
        YAxisValue = dtGeneric.Rows[row][col].ToString();
        if (string.IsNullOrEmpty(YAxisValue))
        {
            YAxisValue = "0";
        }
        valueList.Add(new KeyValuePair<string, double>(XaxisValue, Convert.ToDouble(YAxisValue)));
   }

    gLineSeries.DependentValuePath = "Value";
    gLineSeries.Style = gLineSeries.PolylineStyle;
    gLineSeries.IndependentValuePath = "Key";
    gLineSeries.ItemsSource = valueList;
    gLineSeries.Title = dtGeneric.Columns[col].Caption.Replace('_', '.').ToString();
    gLineSeries.AnimationSequence = AnimationSequence.FirstToLast;
    chartControl.Series.Add(gLineSeries);
}

}

  

正如您在代码中看到的,我使用了keyvaluepair来绘制图形。所以我无法在keyvaluepair的值中添加null值。我尝试过double.NaN但是没有用。

     

我已经迭代了所有列,因为所有列都有其独立的图形。

     

我尝试过一个逻辑来创建图表:

for (int col = 1; col < dtGeneric.Columns.Count; col++)
{
    valueList = new List<KeyValuePair<string, double>>();
    gPositionLineSeries = new System.Windows.Controls.DataVisualization.Charting.LineSeries();
    for (int row = 0; row < dtGeneric.Rows.Count - 1; row++)
    {
        if (!string.IsNullOrEmpty(dtGeneric.Rows[row][0].ToString()) && !string.IsNullOrEmpty(dtGeneric.Rows[row][col].ToString()))  //Null values will be ignored for graph generation...
        {
        XaxisValue = dtGeneric.Rows[row][0].ToString();
        YAxisValue = dtGeneric.Rows[row][col].ToString();
        valueList.Add(new KeyValuePair<string, double>(XaxisValue, Convert.ToDouble(YAxisValue)));
        }
        else
        {
           continue;
        }
    }
}
  

上面的代码工作正常,但图中的X轴值不按顺序排列。

请告诉我一些解决方案。

1 个答案:

答案 0 :(得分:0)

在if block

中使用下面的代码
... The counter CX was cleared beforehand

... Here AL contains the character!

cmp al,"A"
jb  Skip
cmp al,"Z"
ja  Skip
inc cx     CX will hold the result
Skip:

... Here you control your loop to iterate over the entire string