2015-07-15 3 views
0

Je travaille sur l'application WPF qui inclut le diagramme WPF. Je suis confronté à une situation. Je souhaite dessiner le graphique uniquement pour les valeurs en ignorant les valeurs vides. Dans l'application, les données sont contenues par une grille de données et les mêmes données seront reflétées dans le graphique, mais la grille de données ayant des valeurs vides (DBNull.Value). Donc, je veux générer un graphique avec seulement des valeurs en ignorant les valeurs vides.Ignorer les valeurs vides dans le contrôle de graphique WPF

Voici mon code pour générer un graphique.

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); 
} 

}

Comme vous pouvez le voir dans le code, je l'ai utilisé KeyValuePair pour tracer le graphe. Donc, je suis incapable d'ajouter une valeur nulle dans la valeur de keyvaluepair. J'ai essayé avec double.NaN mais cela ne fonctionne pas.

J'ai itéré toutes les colonnes car toute la colonne aura son graphe séparé.

J'ai essayé une logique pour créer le graphique qui est:

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; 
     } 
    } 
} 

code ci-dessus fonctionne très bien, mais les valeurs de l'axe X dans le graphe est en ordre.

S'il vous plaît dites-moi une solution.

+0

Dans les deux codes ci-dessus: XaxisValue = dtGeneric.Rows [ligne] [0] .ToString(); ** 0 est utilisé parce que la colonne zéro est utilisée pour les valeurs de l'axe X ** –

+0

Quelqu'un peut-il aider dans cette situation? –

Répondre

0

utilisation ci-dessous code si le bloc

string.IsNullOrEmpty(row.Cells[clm.Index].Value.ToString())