无法将数据表绑定到Chart Control

时间:2012-10-14 09:12:34

标签: c# charts datatable

我想在我的测试应用程序中使用极坐标图表。我有一个包含几列的数据表,其中名称为“X”的列应提供x值成员,其他列应为y值成员。我在MSDN上找到了一个教程,但它没有真正起作用,因为行

chart1.DataBindTable(dt, "X");

不会编译。欢迎任何提示,谢谢。

以下是代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace PolarChartTest_01
{
    public partial class Form1 : Form
    {
    public DataTable dt;
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        dt.Rows.Clear();
        dt.Columns.Clear();
        chart1.Series.Clear();

        dt.Columns.Add("X", typeof(int));
        dt.Columns.Add("Y", typeof(int));

        for (int j = 0; j < 7; j++)
        {
            DataRow dr = dt.NewRow();

            dr["X"] = j * 45;
            dr["Y"] = j;
            dt.Rows.Add(dr);

        }

        chart1.DataBindTable(dt, "X");
    }
}

}

3 个答案:

答案 0 :(得分:5)

它不会编译,因为DataTable没有实现IEnumerable接口。 尝试:

var enumerableTable = (dt as System.ComponentModel.IListSource).GetList();
chart1.DataBindTable(enumerableTable , "X");

答案 1 :(得分:2)

这可能会对你有所帮助 在页面加载

上写下这个
chart.DataSource = dataqtableName;
chart.Series["seriesName"].XValueMember = "columNameUwantToBind";
chart.Series["seriesName"].YValueMembers = "columNameUwantToBind";
chart.DataBind();

答案 2 :(得分:0)

另一种解决方案可能是:

chart1.DataBindTable(dt.DefaultView, "X");

作为奖励,除了“databindable”之外,返回的DataView可以用于排序和过滤。