如何将数据表绑定到 MS 图表

How To Bind A DataTable To MS Chart

这是我的代码:

 private void frmChart_Load(object sender, EventArgs e)
    {
        string cs = ConfigurationManager.ConnectionStrings["dbcs"].ConnectionString;
        using (SqlConnection Con = new SqlConnection(cs))
        {
            SqlCommand cmdSum = new SqlCommand("Select distinct(UserName),sum(Value) from mytable  group by UserName",Con);
            Con.Open();
            SqlDataReader reader = cmdSum.ExecuteReader();
            chart1.DataBindTable(reader,"sum(Value)");
        }
        foreach (Series series in chart1.Series)
        {
            series.CustomProperties = "DrawingStyle=LightToDark";
        }

    }

chart1.DatabindTable 显示错误。我也尝试了另一种方法,但我无法处理。

将您的值检查到 reader.. 如果您有值,

尝试替换

chart1.DataBindTable(reader,"sum(Value)");

chart1.DataBindTable(reader,"Value");

一旦您将值汇总到查询中,您就无需再提及总和,您的值参数将具有总和

编辑 --- 更新代码..

private void frmChart_Load(object sender, EventArgs e)
        {
            string cs = ConfigurationManager.ConnectionStrings["dbcs"].ConnectionString;
            using (SqlConnection Con = new SqlConnection(cs))
            {
                SqlCommand cmdSum = new SqlCommand("Select distinct(UserName),sum(Value) from mytable  group by UserName", Con);
                Con.Open();
                SqlDataReader reader = cmdSum.ExecuteReader();
                while (reader.Read())
                {
                    chart1.DataBindTable(reader, reader["Value"]);
                }

            }
            foreach (Series series in chart1.Series)
            {
                series.CustomProperties = "DrawingStyle=LightToDark";
            }

        }

如果您只想绑定数据 table,那么只需这样做:

        private void Form1_Load(object sender, EventArgs e)
        {
            string sql = "your sql here";

            SqlDataAdapter adapter = new SqlDataAdapter(sql, connectionString);
            DataTable dt = new DataTable();
            adapter.Fill(dt);
            chart1.DataBindTable(dt.DefaultView, "UserName");
        }

请注意,调用 DataBindTable 时必须使用 "UserName" (xField)。不是 ValueSum(Value)