2016-11-05 23 views
0

我想建立基於此表折線圖: table
其中每個不同KPIName有在圖表上自己的路線。
我該怎麼做?
我嘗試這樣做:折線圖與基於單柱兩個系列值

foreach (KPI_PG kpi in _PG.KPI_PG) 
{ 
    Series currentPG = new Series(kpi.KPIName); 
    chrt_PGByYear.Series.Add(currentPG); 
    currentPG.ChartType = SeriesChartType.Line; 
    currentPG.BorderWidth = 3; 
    currentPG.XValueType = ChartValueType.String; 
    currentPG.XValueMember = "Year"; 
    currentPG.YValueType = ChartValueType.Int32; 
    currentPG.YValueMembers = "Value"; 
} 

,但它並沒有因爲同一個圖表名稱的工作。

+0

您的表格顯示5行中的3個不同的kpiNames。你想要3系列還是5?這條生產線如何以三個不同的'年份'作爲字符串?你應該重新檢查你的數據.. – TaW

回答

0

系列名稱必須是唯一的。你應該檢查該系列是否已經存在,如果存在,則不要添加它。否則,添加該系列。

private void createNewSeries(String SeriesName) 
{ 
    if(chrt_PGByYear.Series.IsUniqueName(SeriesName)) 
    { 
     Series currentPG = chrt_PGByYear.Series.Add(SeriesName); 
     currentPG.ChartType = SeriesChartType.Line; 
     currentPG.BorderWidth = 3; 
     currentPG.XValueType = ChartValueType.String; 
     currentPG.XValueMember = "Year"; 
     currentPG.YValueType = ChartValueType.Int32; 
     currentPG.YValueMembers = "Value"; 
    } 
} 

然後,你可以使用它像:

foreach (KPI_PG kpi in _PG.KPI_PG) 
{ 
    createNewSeries(kpi.KPIName); 
} 
+0

它不能正常工作。此代碼根據DataSource中的所有值僅顯示添加的最後一個系列的一行。 –

+0

你能告訴我們你的代碼在哪裏設置你的數據源? – Baddack

+0

我已經改變了它,但它是這樣的: 'private void FillChart(DataTable table){ chrt_PGByYear.DataSource = table; foreach(_PG.KPI_PG中的KPI_PG kpi) { createNewSeries(kpi.KPIName); } }' –

0

這似乎是不可能的。我只是使用chrt_PGByYear.Series[serieName].Points.AddXY()方法手動填寫此圖表。