TeeChart for .NET教程:連接圖表演示

    TeeChart for .NET圖表組件庫提供數百種2D和3D圖形樣式,54種運算和統計函數以及無限數量的座標軸和14工具箱供你選擇。該圖表控件還能夠有效地用於建立多任務的儀表板。 sql


    本文章中的演示展現了擁有TeeChart的圖表如何在WinForm的應用程序中的表單上相互協做。數據庫

    該演示使用了小型技術產品供應商的公司數據的基礎;該公司銷售電子產品,小型計算機,平板電腦和移動電話,並在全球一些國家擁有市場。app

    能夠在點擊下載使用Visual Studio 2015編寫的演示代碼編輯器

建立項目函數

    咱們建立一個新的的WinForms項目,並將主窗體重命名爲ReportForm。工具

  1. 向表單添加對象。咱們將三個圖表,一個dataGridView和一個文本框添加到表單中,並將它們放置在佔據表單的整個空間中,參見下圖。this

    Visual Studio中的設計時間

  2. 使用圖表編輯器,咱們在圖表中添加了一個數據集以及一個平滑功能,您能夠在此階段看到填充的隨機數據,能夠在設計時或運行時添加數據系列。編碼

  3. 咱們將公司銷售數據放在名爲TechProducts Ltd的MS Access文件中,並將該文件放在LinkingCharts解決方案文件夾中。spa

將數據添加到項目中設計

    咱們已經將數據庫添加到項目中,公開表和查詢(視圖)。

  1. 使用BindingSource的組件,咱們鏈接到訪問數據庫。數據庫已經爲咱們但願可視化的一些數據準備了查詢。對於其餘狀況,在運行時執行期間,咱們將在代碼中編寫一些SQL查詢。

  2. 添加了三個BindingSources,鏈接到$ _€_SalesByYear,$ _SalesByCountry_2015和$ _SalesByContinent視圖。

將圖表鏈接到數據

  1. 要鏈接到的BindingSource,請打開要修改的圖表編輯器,而後選擇先前已添加的系列並轉到其數據源選項卡。若是單擊數據集選項卡,則能夠選擇要鏈接該系列的BindingSource的。在如下選擇框中,您能夠將不一樣的源字段與X和y系列值列表相關聯。

    系列數據源編輯器

  2. 對三個圖表重複鏈接技術。咱們已將左欄系列圖表鏈接到SalesByContinent數據,右側是餅圖,鏈接到SalesByCountry_2015數據,將下線圖表鏈接到SaleByYear數據。

連接圖表

  1. 咱們如今有三個圖表,按大陸,地區(銷售國家,非洲大陸)和國家的數據區分。咱們在這個演示中的目的是連接三個圖表,這樣,經過點擊大陸圖表的條形圖,咱們能夠填充區域圖表,經過點擊區域圖表,咱們能夠顯示所選國家最近幾年的銷售演變。dataGridView將更新以顯示區域圖表的內容。

    注意:演示將打開,顯示區域圖表中的全部國家/地區。文本框更新以顯示機器人記者的模擬評論。

  2. 要連接項目頁面的不一樣元素,咱們將設置一些圖表事件。

ClickSeries事件

    咱們正在使用ClickSeries事件,它將會查看點擊圖表中的值做爲參數填充下一個相關圖表。咱們能夠在設計時添加事件定義,方法是選擇咱們但願操做的圖表,而後選擇Visual Studio的屬性窗口的事件選項卡,在這種狀況下,從列表中選擇TChart的點擊事件。

    這將在Form的代碼頁中建立事件方法。在這裏,咱們須要添加一些內容,以便將系列點擊與咱們但願去的地方聯繫起來。爲清晰起見,咱們選擇部分手動編碼查詢。該方法遵循如下步驟:

    以國家/大陸圖表的原始查詢爲基礎,對其進行修改以收集全部可用年份的數據。

修改區域查詢:

    @contiparam是您要查看的大陸,來自大陸圖表值的標籤。若是要爲查詢建立更好的索引,可使用索引值或其餘變量。

string sqlStr =「SELECT Sum(Fact_Invoices.Invoice_Value)AS SumOfInvoice_Value,Lookup_Country.Country_name,Lookup_Continent.continent_name」; 
 sqlStr + =「FROM((Fact_Invoices INNER JOIN Lookup_Customers ON Fact_Invoices.Cod_Customer = Lookup_Customers.Cod_Customer)」; 
 sqlStr + =「INNER JOIN Lookup_Country ON Lookup_Customers.Country_code_A2 = Lookup_Country.Country_code_A2)」; 
 sqlStr + =「INNER JOIN Lookup_Continent ON Lookup_Country.Continent = Lookup_Continent.continent」; 
 sqlStr + =「where Lookup_Continent.continent_name = @contiParam GROUP BY Lookup_Country.Country_name,Lookup_Continent.continent_name」;

修改國家/地區查詢:

    咱們將要審覈的國家/地區的標籤做爲國家/地區時間查詢的參數。

string sqlStr =「SELECT Sum(Fact_Invoices.Invoice_Value)AS SumOfInvoice_Value,Fact_Invoices.Invoice_year AS AYear,Lookup_Country.Country_name」; sqlStr + =「FROM(Lookup_Customers INNER JOIN Fact_Invoices ON Lookup_Customers.Cod_Customer = Fact_Invoices.Cod_Customer)」; sqlStr + =「INNER JOIN Lookup_Country ON Lookup_Customers.Country_code_A2 = Lookup_Country.Country_code_A2」; sqlStr + =「WHERE Lookup_Country.Country_name = @countryParam」; sqlStr + =「GROUP BY Fact_Invoices.Invoice_year,Lookup_Country.Country_name」;

    這些查詢足以連接圖表,咱們從GridView控件以相同的方式點擊一下。以其中一個爲例,對於區域圖表,您能夠看到如何爲收件人圖表建立的BindingSource以方便插入。

    使用SQL查詢建立和使用新的BindingSource的做爲網格和圖表的源。

DataSet customers = new DataSet();

System.Data.OleDb.OleDbDataAdapter myAdapter = new System.Data.OleDb.OleDbDataAdapter(sqlStr, this.___SalesByCountry_2015TableAdapter.Connection);

//apply region code
myAdapter.SelectCommand.Parameters.Clear();
myAdapter.SelectCommand.Parameters.Insert(0, new System.Data.OleDb.OleDbParameter("contiParam", region));
myAdapter.Fill(customers, "Customers");

bindEurope = new BindingSource();
bindEurope.DataSource = customers;
bindEurope.DataMember = customers.Tables[0].ToString();

dataGridView1.DataSource = bindEurope;
dataGridView1.Refresh();

dataGridView1.Columns[0].HeaderText = "Sales Income";
dataGridView1.Columns[1].HeaderText = "Country";
dataGridView1.Columns[2].HeaderText = "Continent";

tChart3[0].DataSource = bindEurope;
tChart3[0].YValues.DataMember = "SumOfInvoice_Value";
tChart3[0].LabelMember = "Country_name";

tChart3[0].CheckDataSource();

TeeChart使用Chart Series的CheckDatasource()方法刷新Chart數據。

應用輸出

    下列兩圖的屏幕截圖顯示了運行時的應用程序。

TechProStart-300x163.png    æ¬§æ´²å’Œç‘žå£«é€‰æ‹©

相關文章
相關標籤/搜索