3

我想在我的测试应用程序中使用极坐标图。我有一个包含几列的数据表,其中名为“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");
    }
}

}

4

3 回答 3

5

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

var enumerableTable = (dt as System.ComponentModel.IListSource).GetList();
chart1.DataBindTable(enumerableTable , "X");
于 2012-10-14T09:28:56.320 回答
2

这可能会帮助您在页面加载时写下这个

chart.DataSource = dataqtableName;
chart.Series["seriesName"].XValueMember = "columNameUwantToBind";
chart.Series["seriesName"].YValueMembers = "columNameUwantToBind";
chart.DataBind();
于 2013-07-17T12:53:01.983 回答
0

另一种解决方案可能是:

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

作为奖励,除了“可数据绑定”之外,此返回的 DataView 还可用于排序和过滤。

于 2016-01-21T10:02:11.507 回答