Can't bind datatable to Chart Control

匿名 (未验证) 提交于 2019-12-03 02:31:01

问题:

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

}

回答1:

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

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


回答2:

This may help you Write this on page load

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


回答3:

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".



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!