从DataGridView获取数据到图表

时间:2015-06-23 14:22:02

标签: c# datagridview charts dataset

我需要将单个DataGridView中的数据导入3个不同的图表,每个列到图表。 这是我第一次使用图表,所以我对它们进行了一些研究,但找不到任何可以帮助我解决这个问题的方法。

下面是我的DataGridView和我的图表的截图,以及它们各自的图例:

DataGridView and Charts

我需要的是(至少在理论上)一件非常简单的事情。在“SANITY”图表中,我需要将位于Table[0, 0]的值设置为类似sanityChart.Series[0]的值作为其“Y”值,依此类推。 “UNIT”和“ISSUES DB”也是一样的。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

从问你问题的方式和你所展示的图像我相信你想要这样的东西:

enter image description here

我只使用了一个Chart,我为每个Series添加了一个Columns

设置图表后,我为表中的每一行添加了一个数据点到每个系列/列..:

// setting up the datagridview
Table.Rows.Clear();
Table.Columns.Clear();
Table.Columns.Add("state", "");
Table.Columns.Add("sanity", "SANITY");
Table.Columns.Add("unit", "UNIT");
Table.Columns.Add("issuesDb", "ISSUES DB");
// filling in some data
Table.Rows.Add("ALL PASSED", 86, 21, 2);
Table.Rows.Add("FAILED", 7, 0, 1);
Table.Rows.Add("Cancelled", 0, 0, 0);

// Now we can set up the Chart:
List<Color> colors = new List<Color>{Color.Green, Color.Red, Color.Black};

chart1.Series.Clear();

for (int i = 0 ; i < Table.Rows.Count; i++)
{
    Series S = chart1.Series.Add(Table[0, i].Value.ToString());
    S.ChartType = SeriesChartType.Column;
    S.Color = colors[i];
}

// and fill in all the values from the dgv to the chart:
for (int i = 0 ; i < Table.Rows.Count; i++)
{
   for (int j = 1 ; j < Table.Columns.Count; j++)
   {
      int p = chart1.Series[i].Points.AddXY(Table.Columns[j].HeaderText, Table[j, i].Value);
   }
}

请注意,我已选择添加DataPoints AddXY重载,并决定将X-Values添加为{{1},以便让我的生活更轻松一些}。在内部,它们仍然转换为strings,并且所有值都为doubles!这里对我们来说不是问题,但重要的是要理解我们没有使用有效数字,因此不能将它们视为数字!优点是轴标签被设置为列标题而没有任何进一步的工作..