ASP.NET图表控件和数据绑定到多个系列

时间:2012-02-08 19:32:03

标签: c# asp.net charts

我正在使用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();
        }

    }

1 个答案:

答案 0 :(得分:1)

读者只是前瞻性的,你现在的代码需要在阅读器中迭代三次。

有许多选项,但如果您想使用DataBindXY,则需要将读取器中的数据提取到集合中(例如使用LINQ)并绑定到该集合。

另一种方法是在每个系列上设置XValueMemberYValueMembers属性,然后调用DataBind,然后通过阅读器在一次迭代中将所有三个系列绑定。