Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将DataTable绑定到MS图表_C#_Sql_.net_Charts_Mschart - Fatal编程技术网

C# 如何将DataTable绑定到MS图表

C# 如何将DataTable绑定到MS图表,c#,sql,.net,charts,mschart,C#,Sql,.net,Charts,Mschart,这是myCode: private void frmChart_Load(object sender, EventArgs e) { string cs = ConfigurationManager.ConnectionStrings["dbcs"].ConnectionString; using (SqlConnection Con = new SqlConnection(cs)) { SqlCommand cm

这是myCode:

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

一旦您将值汇总到查询中,就不必再次提及sum,您的Value参数将具有sum

编辑---更新代码

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";
            }

        }

将您的值签入读卡器。。如果你有价值观

试着替换

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

一旦您将值汇总到查询中,就不必再次提及sum,您的Value参数将具有sum

编辑---更新代码

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";
            }

        }

如果您只想绑定一个数据表,那么只需执行以下操作:

        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
时,必须使用“用户名”(
xField
)。不是
Value
Sum(Value)

如果您只想绑定一个数据表,那么只需执行以下操作:

        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
时,必须使用“用户名”(
xField
)。不是
Value
Sum(Value)

向我们准确地显示错误是什么将有助于我们帮助您。首先,我要检查要绑定到的列的确切名称。是否要为每个不同的用户绘制一个值?@MongZhu是的,这是真的。@PaulF System.Windows.Forms.DataVisualization.dll中出现“System.ArgumentOutOfRangeException”类型的未处理异常。其他信息:数据点插入错误。只能为此数据设置1个Y值series@MongZhu:如果查看SqlDataReader的文档,您将看到它是从实现IEnumerable的DbDataReader派生的。您可以通过“bool isEnumerable=typeof(IEnumerable).IsAssignableFrom(typeof(SqlDataReader));”来确认,向我们显示错误的确切内容将对您有所帮助。首先,我要检查要绑定到的列的确切名称。是否要为每个不同的用户绘制一个值?@MongZhu是的,这是真的。@PaulF System.Windows.Forms.DataVisualization.dll中出现“System.ArgumentOutOfRangeException”类型的未处理异常。其他信息:数据点插入错误。只能为此数据设置1个Y值series@MongZhu:如果查看SqlDataReader的文档,您将看到它是从实现IEnumerable的DbDataReader派生的。您可以用“bool IsEnumerable=typeof(IEnumerable).IsAssignableFrom(typeof(SqlDataReader));”确认输出是什么?您使用的是哪个图表和c#what widows/wpf web?我在windows窗体app中添加了一个列图表。它不起作用,它显示了关于argument2的另一个错误,无法从对象转换为字符串。我使用tostring()来,但它没有用。那么输出是什么?您使用的是哪个图表和c#what widows/wpf web?我在windows窗体app中添加了一个列图表。它不起作用,它显示了argument2的另一个错误,无法从对象转换为字符串。我使用tostring()来,但它没有用。例如,如果我有两列而不是一列,我有Sender列和Receiver列,我想显示它的值。是否可以使用上述代码?如果这是真的,我将非常感谢您的帮助,因为我对上述代码做了一些更改,但我无法得到结果。如果您想在同一个图表中显示发送方和接收方,那么您将需要两个单独的系列,然后将它们分别绑定
DataBindTable
无法为您执行此操作,它只能将一个表绑定到一个系列,这是默认系列。你最好把这个新的特定场景作为一个新问题发布出来。如果您还没有这样做,请阅读如何提出一个好问题,这样会有很多人试图帮助您。具体来说,您必须这样做:
chart1.Series[0].Points.DataBind();chart1.Series[1]。Points.DataBind()
您可以看到
DataBind()
的文档,这与
DataBindTable
非常相似。如果我有两列而不是一列,例如,我没有用户名,而是有发送者列和接收者列,我想显示它的值。是否可以使用上述代码?如果这是真的,我将非常感谢您的帮助,因为我对上述代码做了一些更改,但我无法得到结果。如果您想在同一个图表中显示发送方和接收方,那么您将需要两个单独的系列,然后将它们分别绑定
DataBindTable
无法为您执行此操作,它只能将一个表绑定到一个系列,这是默认系列。你最好把这个新的特定场景作为一个新问题发布出来。如果您还没有这样做,请阅读如何提出一个好问题,这样会有很多人试图帮助您。具体来说,您必须这样做:
chart1.Series[0].Points.DataBind();chart1.Series[1]。Points.DataBind()
您可以看到
DataBind()
的文档,它与
DataBindTable
非常相似。