Инфраструктура Ultrachart: заполняйте ряд данных XY данными из таблицы данных - PullRequest
0 голосов
/ 03 ноября 2010

Кто-нибудь работает с Infragistics UltraChart? Я пытаюсь привязать DataTable с данными монитора высот к линейному графику в форме Windows.

Как видно из следующего кода, я определил DataSet и DataTable и начал настраивать свойства диаграммы, но я не уверен, как связать таблицу DataTable с серией XYDataPointCollection в диаграмме. , В основном я хочу иметь возможность построить график из двух полей в таблице данных: «dateTime» (ось X) и «gwElevation» (ось Y) для указанного диапазона дат.

} GroundwaterMonitorDataSet gwMonDataSet = new 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();

}

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 01 декабря 2010

Ну, я наконец-то понял это сам:

Сначала должна быть создана коллекция EnumerableRowCollection. Я создал один, используя запрос linq, который читает из таблицы в моем 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);

Затем я создаю NumericTimeSeries, который заполняется с помощью цикла 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));
      }

Теперь NumericTimeSeries готов к добавлению в UltraChart:

//add the data series to the chart as the data source
chartGwData.Series.Add(gwElevSeries);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...