2013-04-06 33 views
1

我是MSChart的新手,下面的代碼適用於多系列列。 但我知道應該有一個更簡短的方式來顯示多系列沒有 訴諸創建兩個數據表或更好,使用DataBindTable或DataBindCrossTable很少代碼如 。Multi系列MSChart

有沒有更短的方式做我在做什麼?我試圖通過這種方式來展示給定學年入學的學生人數。

String sql, sql2; 

sql = @"SELECT Major, SchoolYear, COUNT(*) as TotalStudents 
       FROM StudentList 
       WHERE Major='AFT' 
       GROUP BY Major, Schoolyear"; 

sql2 = @"SELECT Major, SchoolYear, COUNT(*) as TotalStudents 
       FROM StudentList 
       WHERE Major='AFT' 
       GROUP BY Major, Schoolyear"; 

     SqlConnection con = new SqlConnection(connString); 

     con.Open(); 
     SqlDataAdapter dta = new SqlDataAdapter(sql, con); 
     DataSet dst = new DataSet(); 
     DataTable dt; 
     dta.Fill(dst); 
     dt = dst.Tables[0]; 

     chart1.Width = 900; 
     chart1.ChartAreas[0].AxisX.Title = "School Year"; 
     chart1.ChartAreas[0].AxisY.Title = "Enrollment"; 

     chart1.Series[0].Name = dt.Rows[0][0].ToString(); 
     chart1.Series[0].XValueMember = "SchoolYear"; 
     chart1.Series[0].YValueMembers = "TotalStudents"; 
     chart1.Series[0].Points.DataBindXY(dt.CreateDataReader(),"SchoolYear", dt.CreateDataReader(), "TotalStudents"); 


     dta = new SqlDataAdapter(sql2, con); 
     dst = new DataSet(); 
     dta.Fill(dst); 
     dt = dst.Tables[0]; 
     chart1.Series.Add(dt.Rows[0][0].ToString()); 
     chart1.Series[1].XValueMember = "SchoolYear"; 
     chart1.Series[1].YValueMembers = "TotalStudents"; 
     chart1.Series[1].Points.DataBindXY(dt.CreateDataReader(), "SchoolYear", dt.CreateDataReader(), "TotalStudents"); 

回答

1

你會在下面嘗試嗎?

String sql, sql2; 

sql = @"SELECT Major, SchoolYear, COUNT(*) as TotalStudents 
       FROM StudentList 
       WHERE Major='AFT' 
       GROUP BY Major, Schoolyear"; 


     SqlConnection con = new SqlConnection(connString); 

     con.Open(); 
     SqlDataAdapter dta = new SqlDataAdapter(sql, con); 
     DataSet dst = new DataSet(); 
     DataTable dt; 
     dta.Fill(dst); 
     dt = dst.Tables[0]; 

     chart1.DataSource = dt; 

     chart1.Width = 900; 
     chart1.ChartAreas["abc"].AxisX.Title = "School Year"; 
     chart1.ChartAreas["abc"].AxisY.Title = "Enrollment"; 

     chart1.Series["xyz"].Name = dt.Rows[0][0].ToString(); 
     chart1.Series["xyz"].XValueMember = "SchoolYear"; 
     chart1.Series["xyz"].YValueMembers = "TotalStudents"; 


     chart1.DataBind(); 

HTML:

  <asp:Chart ID="chart1" runat="server" ImageStorageMode="UseImageLocation" ImageLocation="ChartPic_#SEQ(300,3)"> 
       <ChartAreas> 
        <asp:ChartArea Name="abc"> 
        </asp:ChartArea> 
       </ChartAreas> 
      </asp:Chart> 
+0

謝謝@ user1828411。你挖這個人的那個哈哈? ;-)無論如何,我會稍後嘗試。順便說一句,我不使用ASP,但我使用的WinForms換句話說,這是一個桌面應用程序。再次感謝你,上帝保佑。 – Edper 2013-06-17 16:54:47

+0

這並沒有解決我的問題,但它給了我最後解決這個問題的提示,因此對你滿意;-)謝謝你,上帝保佑。 – Edper 2013-07-08 00:21:15