简体   繁体   中英

Can't bind datatable to Chart Control

I'd like to use a polar chart in my test application. I've a data table with a couple of columns where the column with the name of "X" should provide the x value members, the others should be the y value members. I found a tutorial on MSDN but it doesn't really work because the line

chart1.DataBindTable(dt, "X");

won't compile. Any tip is welcome and thank you.

Here is the code :

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

}

It won't compile because DataTable doesn't implement IEnumerable interface. Try:

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

This may help you Write this on page load

chart.DataSource = dataqtableName;
chart.Series["seriesName"].XValueMember = "columNameUwantToBind";
chart.Series["seriesName"].YValueMembers = "columNameUwantToBind";
chart.DataBind();

Another solution might be:

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

As a bonus, the DataView this returns can be used for sorting and filtering, besides being "databindable".

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM