0

我正在关注这篇文章,以构建一个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();

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

在此处输入图像描述

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

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

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

编码帮助将不胜感激。谢谢。

4

1 回答 1

0

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

Chart1.Series.Add(seriesName);

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

  • 选择 *
  • SqlConnection、SqlCommand、...
  • 混合 UI 代码和 DB 代码(它们应该在不同的类中)

查看此示例以获取可能的解决方案。

于 2014-11-07T09:54:22.783 回答