我一直在試圖製作一個多線圖,它從數據庫中提取數據。 在努力做到這一點,我寫了下面的代碼來填充圖表:多線圖
SqlConnection con1 = new SqlConnection();
con1.ConnectionString = ConfigurationManager.ConnectionStrings["Removed"].ToString();
SqlCommand cmd1 = new SqlCommand("SELECT YEAR(Start_Date) AS Year, Month(Start_Date) As Month, Cost, Utility_Type FROM import_Utilities WHERE YEAR(Start_Date) = 2011 AND Utility_Type = 'Water'");
cmd1.Connection = con1;
con1.Open();
SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
DataTable dt1 = new DataTable();
da1.Fill(dt1);
Chart1.DataSource = dt1;
Chart1.Series["Series2"].XValueMember = "Month";
Chart1.Series["Series2"].YValueMembers = "Cost";
Chart1.Legends.Add(new Legend("Default") { Docking = Docking.Right });
Chart1.DataBind();
con1.Close();
SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings["Removed"].ToString();
con.Open();
SqlCommand cmd = new SqlCommand("SELECT YEAR(Start_Date) AS Year, Month(Start_Date) As Month, Cost, Utility_Type FROM import_Utilities WHERE YEAR(Start_Date) = 2012 AND Utility_Type = 'Water'");
cmd.Connection = con;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
Chart1.DataSource = dt;
Chart1.Series["2010"].XValueMember = "Month";
Chart1.Series["2010"].YValueMembers = "Cost";
Chart1.DataBind();
con.Close();
此代碼的工作,除了它有兩個數據源,所以只有底部的SqlConnection被填充到圖表。 我在失去如何解決這個問題,我想他們是一個更好的方式去做這件事,但我很茫然。
UPDATE:
使用例如波紋管我結束了使用樞軸SQL使一個表(參照圖片)。 然後我更新了我的代碼如下所示:
SqlCommand cmd = new SqlCommand("SELECT * FROM (SELECT YEAR(Start_Date), CASE MONTH(Start_Date) WHEN 1 THEN 'January' WHEN 2 THEN 'February' WHEN 3 THEN 'March' WHEN 4 THEN 'April' WHEN 5 THEN 'May' WHEN 6 THEN 'June' WHEN 7 THEN 'July' WHEN 8 THEN 'August' WHEN 9 THEN 'September'WHEN 10 THEN 'October' WHEN 11 THEN 'November' WHEN 12 THEN 'December' END as [Month], [Cost] FROM [HousingAccountingReports].[dbo].[import_Utilities] Where [Building] = 'Building B' AND [Utility_Type] = 'Electric') TableDate PIVOT (SUM([Cost]) FOR [Month] IN ([January],[February],[March],[April],[May],[June],[July],[August],[September],[October],[November],[December])) PivotTable");
cmd.Connection = con;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
Chart3.DataSource = dt;
Chart3.Series["Series1"].XValueMember = "Month";
Chart3.Series["Series1"].YValueMembers = "2010";
Chart3.Series["Series2"].XValueMember = "Month";
Chart3.Series["Series2"].YValueMembers = "2011";
Chart3.Series["Series3"].XValueMember = "Month";
Chart3.Series["Series3"].YValueMembers = "2012";
Chart3.DataBind();`
當我運行該頁面就錯誤找不到列一個月。如果我添加:
dt.Columns.Add(「Month」); dt.Columns.Add(「Year」);` 它找不到2010,我如何讓我的圖表正確駕駛;是他們的問題與我的樞軸sql?
[Separating Chart Series]的可能重複(http://stackoverflow.com/questions/22638639/separating-chart-series) – TylerDurden