2015-09-12 80 views
1

我有一個圖表控件,我已經採取了datalist項目模板,因爲我想顯示所有學生報告卡的圖表在單擊。 我陷入了一個問題,因爲當我對圖表具有約束力時,它總是顯示所有其他圖表上的最後一個學生標記,並且我想要在不同的圖表上顯示不同的學生標記。請幫我出圖表控件裏面datalist

protected void dlCategory_ItemDataBound(object sender, DataListItemEventArgs e) 
{ 
DataSet dsStu = new DataSet(); 
     string sqlStu = "SELECT distinct t.studentcode FROM tblcce9_studentgrades t join tblstudent st on t.studentcode=st.studentcode where examname='" + lblExamCode.Text + "' and st.classcode='" + lblClassCode.Text + "' and t.subpart='1' and st.recordstatus <>'D'"; 
     dsStu = obj.openDataset(sqlStu, Session["SCHOOLCODE"].ToString()); 
     if (dsStu.Tables[0].Rows.Count > 0) 
     { 
      for (int i = 0; i < dsStu.Tables[0].Rows.Count; i++) 
      { 
       if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item) 
       { 
        string sqlchart = "select cl.classname,Concat(ga.forename,' ',ga.Surname) as fathername,s.studentcode,s.admissionnumber,s.studentname, sum(g.grade)" + 
                      " as totalmarks,a.assessareaname,sub.subassessname,sub.maxmarks , e.examname from tblcce9_studentgrades g inner join" + 
                      " tblstudent s on s.studentcode = g.studentcode inner join tblcce9_assessmentareas a on g.assessmentareacode =a.assessareacode" + 
                      " inner join tblcce9_subassess sub on g.subassesscode=sub.id inner join tblcce9_examname e on g.examname=e.id inner" + 
                      " join tblguardian ga on s.studentcode=ga.studentcode inner join tblclass cl on s.classcode = cl.classcode where" + 
                      " sub.classcode='" + lblClassCode.Text + "' and s.studentcode='" + dsStu.Tables[0].Rows[i]["studentcode"] + "' and ga.relationshipcode='14' and s.recordstatus<>'D' group by assessareaname order by a.priority"; 
        DataSet dschart = new DataSet(); 
        dschart = obj.openDataset(sqlchart, Session["SCHOOLCODE"].ToString()); 
        if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item) 
        { 
         Chart chrt = (Chart)e.Item.FindControl("Chart1"); 
         if (dschart.Tables[0].Rows.Count > 0) 
         { 
          string[] x = new string[dschart.Tables[0].Rows.Count]; 
          int[] y = new int[dschart.Tables[0].Rows.Count]; 

          for (int k = 0; k < dschart.Tables[0].Rows.Count; k++) 
          { 
           x[k] = dschart.Tables[0].Rows[k]["assessareaname"].ToString(); 
           y[k] = Convert.ToInt32(dschart.Tables[0].Rows[k]["totalmarks"].ToString()); 
          } 

          chrt.Series[0].Points.DataBindXY(x, y); 
          chrt.Series[0].ChartType = SeriesChartType.Column; 
          //chrt.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true; 
          //chrt.Legends[0].Enabled = true; 


         } 
        } 
       } 
      } 

     } 


} 

回答

0

它工作正常,只要你obj.openDataset()正在返回正確的數據:

enter image description here

+0

DS將返回正確的數據,但我得到相同的記錄所有的學生。 – Ashish

+0

我用你的代碼,除了一個模擬'obj.openDataset()' – jsanalytics