'SeriesCollection'中已存在名为'John'的图表元素

时间:2014-11-07 09:44:22

标签: c# charts aspchart

我正在关注this post,以构建bar chart并在我的网页上展示。以下是我为完成它所做的代码:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);            
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from ForChart";
cmd.CommandType = CommandType.Text;            

SqlDataAdapter adp = new SqlDataAdapter();
adp.SelectCommand = cmd;
DataSet myDataSet = new DataSet();
adp.Fill(myDataSet, "Query");

foreach (DataRow row in myDataSet.Tables["Query"].Rows)
{
    string seriesName = row["SalesRep"].ToString();
    Chart1.Series.Add(seriesName);
    Chart1.Series[seriesName].ChartType = SeriesChartType.Line;
    Chart1.Series[seriesName].BorderWidth = 2;
    for (int colIndex = 1; colIndex < myDataSet.Tables["Query"].Columns.Count; colIndex++)
    {
        string columnName = myDataSet.Tables["Query"].Columns[colIndex].ColumnName;
        string YVal = Convert.ToString(row[columnName]);
        Chart1.Series[seriesName].Points.AddXY(columnName, YVal);
    }
}

GridView1.DataSource = myDataSet;
GridView1.DataBind();
cmd.Connection.Close();

我的表格中有以下数据。请检查快照

enter image description here

但是当我运行代码时,我收到以下错误。请帮我解决问题:

'SeriesCollection'中已存在名为'John'的图表元素。

我无法遍历记录,这就是我收到此错误的原因,但我不知道如何遍历所有记录。

非常感谢编码帮助。感谢。

1 个答案:

答案 0 :(得分:0)

我假设Chart1.Series需要唯一的名称,因此当您尝试多次输入相同的名称时,此调用将失败:

Chart1.Series.Add(seriesName);

呃,MSDN上的整个例子都充满了不好的做法:

  • 选择*
  • 没有使用SqlConnection,SqlCommand,...
  • 混合UI代码和数据库代码(它们应该在不同的类中)

Look at this example寻求可能的解决方案。