【发布时间】:2016-12-15 13:07:41
【问题描述】:
我正在asp.net 中处理从DataTable 动态创建的图表。基本上我有一个这样的数据表:
所以,我想要在我的图表中为每个不同的位置创建一个列,对于每个不同的类型,我希望有一个列的“部分”,这意味着我希望每个位置都有一个列,按类型划分。
我已经设法做到了这样的事情,但不是我想要的:
现在我将尝试解释我的代码。
首先,我将数据表中的不同位置添加到字符串列表中
string loc = "";
for (int i = 0; i < dtTipos.Rows.Count; i++)
{
if (loc != dtTipos.Rows[i]["Location"].ToString())
listaLocais.Add(dtTipos.Rows[i]["Location"].ToString());
loc = dtTipos.Rows[i]["Location"].ToString();
}
之后,对于每个不同的位置,我选择对应位置的行并为每个位置创建一个系列。我继续创建一个 y=0 和一个 y=total 的点
for (int i = 0; i < listaLocais.Count; i++)
{
DataRow[] lRow = dtTipos.Select("Location = '" + listaLocais[i] + "'");
foreach (DataRow dr in lRow)
{
string serie = dr["Location"].ToString().Substring(0, 2) + "_" + dr["Type"].ToString() + " - " + dr["Total"].ToString();
Series s = new Series();
s.Name = serie;
s.Label = dr["Location"].ToString();
s.ChartType = SeriesChartType.StackedColumn;
chartTipo1.Series.Add(s);
s.Points.AddXY(i + 1, 0);
s.Points[0].Label = " ";
s.Points.AddXY(i + 1,Convert.ToInt32(dr["Total"].ToString()));
s.Points[1].Label = " ";// dtTipos.Rows[i]["Total"].ToString();
}
}
问题是:我认为因为我为每一行创建一个系列,所以每次我使用不同的列时,y 轴都从我离开它的位置开始。
有什么办法可以让它工作吗? 如有任何帮助,我将不胜感激。
【问题讨论】:
标签: c# asp.net .net charts datatable