当前位置:编程学习 > C#/ASP.NET >>

asp.net 根据老师姓名查询课表 ,怎样设计课表。跪求帮助

我要设计一个课程表,根据星期以及节次还有老师姓名选择出该老师的课程表,显示在相应的单元格中(显示课程名称、班级、上课地点),我用的是数据表的拼接做的,先判断节次,然后用case语句判断是是星期几,用sbtable.Append拼接。
    第一节课有两条记录:  星期一 细胞生物学实验 0704 基因工程实验室   
                          星期五 细胞生物学实验 0807 有机化学
我的后台代码如下:
    public void show()
    {   //根据dropdownlist(学年、学期、教师姓名)的选择,依次选出星期、节次、课程名称、班级名称、上课地点
        string strsel = "select a.Week,a.ClassNumber,d.CourseName,c.ClassName,b.RoomName from Tm_LabCourse a,Tm_Lab b,Tm_Class c,Tm_Course d " + "where a.CourseID=d.ID and a.ClassID=c.ID and a.RoomNum=b.RoomNum and a.Term='" + drp_year.SelectedValue + "' and a.TermNum='" + Convert.ToInt32(drp_term.SelectedValue) + "' and a.TeacherID='" + drp_tname.SelectedValue + "'";       
SqlDataReader dr = DbHelperSQL.ExecuteReader(strsel);
       StringBuilder sbTable = new StringBuilder();//表格的拼接
        sbTable.Append("<TABLE BORDER=\"1\" WIDTH=\"100%\" BORDERCOLORDARK=\"white\" BORDERCOLORLIGHT=\"silver\" STYLE=\"z-index: 104\" CELLPADDING=\"1\" CELLSPACING=\"0\">");

        sbTable.Append("<TR>");

        //--------------------固定的部分------------------
        sbTable.Append("<td colspan =\"2\" align=\"left\">时间</td>");
        sbTable.Append("<TD align=\"center\" style=\"width :120px\">星期一</td>");
        sbTable.Append("<TD align=\"center\" style=\"width :120px\">星期二</td>");
        sbTable.Append("<TD align=\"center\" style=\"width :120px\">星期三</td>");
        sbTable.Append("<TD align=\"center\" style=\"width :120px\">星期四</td>");
        sbTable.Append("<TD align=\"center\" style=\"width :120px\">星期五</td>");
        sbTable.Append("<TD align=\"center\" style=\"width :120px\">星期六</td>");
        sbTable.Append("<TD align=\"center\" style=\"width :120px\">星期日</td>");
        sbTable.Append("</TR>");
       //以第一节为例
        sbTable.Append("<TR>");
        sbTable.Append("<TD rowspan =\"4\">上<br />午</TD>");
        sbTable.Append("<TD style =\"width:50px\">第<br>一<br>节</TD>");
        int count = 0;
        if (dr.HasRows)//dr是否为多行
        {
            while (dr.Read())对dr的循环读
            {
                string strc = dr["ClassNumber"].ToString().Trim();
                string[] arr = strc.Split('-'); 
                if (arr[0] == "1")
                {
                    switch (dr["Week"].ToString().Trim())
                    {
                      问题在这里:一般应该是星期一直接拼接一列,星期二拼接两列,依次类推,但是如果第一条记录中星期一有课,第二条记录星期二有课,实现拼接第二条记录时拼接两列,这条记录直接出现在了星期三的位置,因为星期一得位置已经放了记录。                        case "星期一":
                            sbTable.Append("<td>");
                            sbTable.Append(dr["CourseName"].ToString() + "<br>" + dr["ClassName"].ToString() + "<br>" + dr["RoomName"].ToString());
                            sbTable.Append("</td>");
                            break;
                        case "星期二":
                            sbTable.Append("<td>"); sbTable.Append("</td>");
                            sbTable.Append("<td>");
                            sbTable.Append(dr["CourseName"].ToString() + "<br>" + dr["ClassName"].ToString() + "<br>" + dr["RoomName"].ToString());
                            sbTable.Append("</td>");
                            break;
                        case "星期三":
                            sbTable.Append("<td>");
                            sbTable.Append(dr["CourseName"].ToString() + "<br>" + dr["ClassName"].ToString() + "<br>" + dr["RoomName"].ToString());
                            sbTable.Append("</td>");
                            break;
                        case "星期四":
                            sbTable.Append("<td>");
                            sbTable.Append(dr["CourseName"].ToString() + "<br>" + dr["ClassName"].ToString() + "<br>" + dr["RoomName"].ToString());
                            sbTable.Append("</td>");
                            break;
                        case "星期五":
                            sbTable.Append("<td>");
                            sbTable.Append(dr["CourseName"].ToString() + "<br>" + dr["ClassName"].ToString() + "<br>" + dr["RoomName"].ToString());
                            sbTable.Append("</td>"); sbTable.Append("<td>无"); sbTable.Append("</td>"); sbTable.Append("<td>无"); sbTable.Append("</td>");
                            break;
                        case "星期六":
                            sbTable.Append("<td>");
                            sbTable.Append(dr["CourseName"].ToString() + "<br>" + dr["ClassName"].ToString() + "<br>" + dr["RoomName"].ToString());
                            sbTable.Append("</td>"); sbTable.Append("<td>无"); sbTable.Append("</td>");
                            break;
                        case "星期日":
                            sbTable.Append("<td>");
                            sbTable.Append(dr["CourseName"].ToString() + "<br>" + dr["ClassName"].ToString() + "<br>" + dr["RoomName"].ToString());
                            sbTable.Append("</td>"); sbTable.Append("<td>无"); sbTable.Append("</td>");
                            break;

                    }
                       }
               
            }
           
        }
        sbTable.Append("</TR>"); --------------------编程问答-------------------- 重写逻辑,使用gridview实现,列显示星期一 。。。星期五 --------------------编程问答-------------------- 太乱了。。。 --------------------编程问答-------------------- 不乱啊,我写的很清楚啊,用gridview不好,不能实现列的表头,比如说上午、第一节等等
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,