/// <summary> /// Populate all series with data. /// </summary> public void PopulateSeries() { bool LeftAxisUsed = false; bool RightAxisUsed = false; bool BottomAxisUsed = false; bool TopAxisUsed = false; int SeriesIndex = 1; foreach (Series S in Chart.Series) { if (S.HorizAxis == HorizontalAxis.Bottom) { BottomAxisUsed = true; } else { TopAxisUsed = true; } if (S.VertAxis == VerticalAxis.Left) { LeftAxisUsed = true; } else { RightAxisUsed = true; } // Read in XML about this series. XmlDocument Doc = new XmlDocument(); Doc.LoadXml(S.ValuesLists[0].DataMember); string DataSource = XmlHelper.Value(Doc.DocumentElement, "DataSource"); List <string> ColumnNames = new List <string>(); ColumnNames.Add(XmlHelper.Value(Doc.DocumentElement, "X")); ColumnNames.Add(XmlHelper.Value(Doc.DocumentElement, "Y")); ColumnNames.Add(XmlHelper.Value(Doc.DocumentElement, "Y2")); ColumnNames.Add(XmlHelper.Value(Doc.DocumentElement, "Y3")); ColumnNames.Add(XmlHelper.Value(Doc.DocumentElement, "Y4")); DataTable Table = GetDataSourceWithName(DataSource); for (int i = 0; i < S.ValuesLists.Count; i++) { S.ValuesLists[i].Clear(); if (Table != null && i < ColumnNames.Count) { string ColumnName = ColumnNames[i]; if (Table.Columns.Contains(ColumnName)) { if (i == 0 && Table.Columns[ColumnName].DataType == typeof(string)) { S.Labels.Clear(); S.Labels.AddRange(DataTableUtility.GetColumnAsStrings(Table, ColumnName)); } else if (Table.Columns[ColumnName].DataType == typeof(double) || Table.Columns[ColumnName].DataType == typeof(float)) { S.ValuesLists[i].Value = DataTableUtility.GetColumnAsDoubles(Table, ColumnName); S.ValuesLists[i].Count = S.ValuesLists[i].Value.Length; } else if (Table.Columns[ColumnName].DataType == typeof(DateTime)) { DateTime[] Dates = DataTableUtility.GetColumnAsDates(Table, ColumnName); double[] Values = new double[Dates.Length]; for (int j = 0; j < Values.Length; j++) { Values[j] = Dates[j].ToOADate(); } S.ValuesLists[i].Value = Values; S.ValuesLists[i].Count = S.ValuesLists[i].Value.Length; S.ValuesLists[i].DateTime = true; } } else { S.ValuesLists[i].Value = MathUtility.CreateArrayOfValues(SeriesIndex, Table.Rows.Count); S.ValuesLists[i].Count = S.ValuesLists[i].Value.Length; SeriesIndex++; } } } // Strip out missing values. StripOutMissingValues(S); Chart.Axes.Left.Visible = LeftAxisUsed; Chart.Axes.Right.Visible = RightAxisUsed; Chart.Axes.Top.Visible = TopAxisUsed; Chart.Axes.Bottom.Visible = BottomAxisUsed; } }