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();

そして、私のテーブルには以下のデータがあります。スナップショットを確認してください

ここに画像の説明を入力

しかし、コードを実行すると、以下のエラーが発生します。問題を解決するために私を助けてください:

「John」という名前のグラフ要素は、「SeriesCollection」に既に存在します。

レコードをトラバースできないため、このエラーが発生しますが、すべてのレコードをトラバースする方法がわかりません。

コーディングの助けをいただければ幸いです。ありがとう。

4

1 に答える 1

0

Chart1.Series には一意の名前が必要であると想定しているため、同じ名前を複数回入力しようとすると、この呼び出しは失敗します。

Chart1.Series.Add(seriesName);

うーん、MSDN の例全体は悪い習慣でいっぱいです。

  • 選択する *
  • SqlConnection、SqlCommand などで使用されるものはありません...
  • UI コードと DB コードの混合 (これらは別のクラスにする必要があります)

可能な解決策については、この例を見てください。

于 2014-11-07T09:54:22.783 に答える