2012-10-14 64 views
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

它不能編譯,因爲數據表未實現IEnumerable接口。 嘗試:

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

非常感謝! – JustGreg

+0

@ 2kay:AFAIK這改變了.NET 4.0 - [DataTable](http://msdn.microsoft.com/en-us/library/system.data.datatable%28v=vs.100%29.aspx)繼承從[TypedTableBase ](http://msdn.microsoft.com/en-us/library/bb358258%28v=vs.100%29.aspx)實現IEnumerable 和IEnumerable – surfmuggle

+0

這很有趣,因爲我仍然不能讓它直接從.NET 4.0中的DataTable工作,但我同意它看起來應該通過查看文檔來工作。我從編譯器得到一個轉換錯誤,它無法從DataTable轉換爲IEnumerable。 :( – Jonas

2

這可能會幫助你 寫這個頁面加載

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

另一種解決方案可能是:

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

作爲獎勵,該數據視圖可以採用這種回報用於分類和過濾,除了「數據綁定」之外。

相關問題