我正在使用ASP.NET图表控件,我使用以下代码将数据数据绑定到图表控件。图表上有三个系列:Series1,Series2和Series3。我在下面的代码中遇到的问题是它似乎只绑定到第一个系列,这样当显示图表时,只显示第一个系列(Series1),另外两个不显示。如果我单步执行代码,一切似乎都没问题。
有没有人对这个问题的解决方案有任何建议?
private void ChartData1()
{
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = ConfigurationManager.ConnectionStrings["someConnectionString"].ConnectionString;
SqlCommand cmd = null;
cmd = new SqlCommand("dbo.ChartData", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Codevalue", SqlDbType.VarChar, 12);
cmd.Parameters.Add("@filter", SqlDbType.VarChar, 50);
cmd.Parameters["@Codevalue"].Value = "JAM";
cmd.Parameters["@filter"].Value = "three_letter_code";
conn.Open();
SqlDataReader chartReader = cmd.ExecuteReader();
//Bind the data using the DataBindTable method
this.Chart1.Series["Series1"].Points.DataBindXY(chartReader, "bucketdate", chartReader, "RecordCount");
this.Chart1.Series["Series2"].Points.DataBindXY(chartReader, "bucketdate", chartReader, "AverageTurns");
this.Chart1.Series["Series3"].Points.DataBindXY(chartReader, "bucketdate", chartReader, "MovingAverageTurns");
chartReader.Close();
conn.Close();
}
}
答案 0 :(得分:1)
读者只是前瞻性的,你现在的代码需要在阅读器中迭代三次。
有许多选项,但如果您想使用DataBindXY,则需要将读取器中的数据提取到集合中(例如使用LINQ)并绑定到该集合。
另一种方法是在每个系列上设置XValueMember
和YValueMembers
属性,然后调用DataBind
,然后通过阅读器在一次迭代中将所有三个系列绑定。