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