2010-11-03 32 views
0

Est-ce que quelqu'un travaille avec Infragistics UltraChart? J'essaie de lier un DataTable avec des données de surveillance d'altitude à un graphique linéaire dans un formulaire Windows. J'ai vu DataSet et DataTable définis, et j'ai commencé à configurer les propriétés du graphique, mais je ne suis pas sûr comment lier la table DataTable à la série XYDataPointCollection dans le graphique. Fondamentalement, je veux être en mesure de tracer une ligne à partir de deux champs dans la table de données: "dateTime" (axe des x) et "gwElevation" (axe des y) pour une plage de dates spécifiée.Infragistics Ultrachart: Remplir la série de données XY avec des données de DataTable

} GroundwaterMonitorDataSet gwMonDataSet = nouveau GroundwaterMonitorDataSet(); DataTable gwMonDataTable = new DataTable(); gwMonDataTable = gwMonDataSet.Tables.Add ("P-14-01_Data");

this.chartGwData.ChartType = Infragistics.UltraChart.Shared.Styles.ChartType.LineChart; 
    Infragistics.UltraChart.Data.Series.XYDataPointCollection gwMonSeries = new Infragistics.UltraChart.Data.Series.XYDataPointCollection(); 

    chartGwData.LineChart.DrawStyle = Infragistics.UltraChart.Shared.Styles.LineDrawStyle.Solid; 
    chartGwData.LineChart.StartStyle = Infragistics.UltraChart.Shared.Styles.LineCapStyle.Round; 
    chartGwData.LineChart.EndStyle = Infragistics.UltraChart.Shared.Styles.LineCapStyle.Flat; 
    chartGwData.LineChart.NullHandling = Infragistics.UltraChart.Shared.Styles.NullHandling.DontPlot; 
    chartGwData.LineChart.Thickness = 3; 

    this.chartGwData.DataSource = gwMonDataTable; 
    this.chartGwData.DataBind(); 

}

Merci pour toute aide.

Répondre

0

Eh bien, je fini par comprendre moi-même:

D'abord un EnumerableRowCollection doit être créé. J'ai créé une aide d'une requête LINQ qui se lit d'une table dans mon DataSet:

//create EnumerableRowCollection using the linq query on the DataSet table 
gwMonDataTable = gwMonDataSet.P1401; 
     EnumerableRowCollection<DataRow> qrySelectGwMonRecords = 
     (from g in gwMonDataTable.AsEnumerable() 
     where g.Field<DateTime>("readingDate") >= clndrGwMonStart.Value && g.Field<DateTime>("readingDate")<= clndrGwMonEnd.Value 
     select g); 

Puis-je créer un NumericTimeSeries, qui est rempli en utilisant une boucle foreach:

//create NumericTimeSeries; populate using foreach loop 
Infragistics.UltraChart.Resources.Appearance.NumericTimeSeries gwElevSeries = new Infragistics.UltraChart.Resources.Appearance.NumericTimeSeries(); 
     foreach (DataRow gwElevDr in qrySelectGwMonRecords) 
     { 
     gwElevSeries.Points.Add(new Infragistics.UltraChart.Resources.Appearance.NumericTimeDataPoint(System.DateTime.Parse(gwElevDr.ItemArray[2].ToString()),System.Double.Parse(gwElevDr.ItemArray[8].ToString()),"C",false)); 
     } 

maintenant les NumericTimeSeries est prêt à être ajouté à l'UltraChart:

//add the data series to the chart as the data source 
chartGwData.Series.Add(gwElevSeries);