简体   繁体   English

图表控件内部数据列表

[英]Chart Control Inside datalist

I have a chart control which i have taken inside datalist itemtemplate because i want to display chart for all student report card at single click. 我有一个图表控件,该控件已在数据列表itemtemplate中使用,因为我想单击一下即可显示所有学生成绩单的图表。 i have stuck in a problem as when i am binding value to chart but it always show last student marks on all other charts and i want different student marks to be displayed on different chart. 我遇到了问题,因为当我将值绑定到图表时,它始终在所有其他图表上显示最后一个学生成绩,并且我希望在不同的图表上显示不同的学生成绩。 PLease help me out 请帮帮我

   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;


                        }
                    }
                }
            }

        }


} 

It works fine, as long as your obj.openDataset() is returning correct data: 只要您的obj.openDataset()返回正确的数据,它就可以正常工作:

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM