Exemple #1
0
    protected void Button_submit_Click(object sender, EventArgs e)
    {
        //点击此按钮,清除该学科组收到的所有反馈信息

        /*create table gcgFeedBack(  --排课组内部专用表
         *  class_id char(4) not null,
         *      CourseNo char(3) not null,
         *      TeacherNo char(8) not null,
         *      primary key(class_id,CourseNo)
         * )*/
        string         subjectGroupName = Label_SubjectGroup.Text;
        string         sql0             = "select subjectGroupNo from gcgSubjectGroup where subjectGroupName ='" + subjectGroupName + "'";
        DBManipulation dbm = new DBManipulation();
        Object         o   = dbm.ExecuteScalar(sql0, null);

        if (o == null)
        {
            //说明没有这个学科组
            System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('没有该学科组存在!')", true);
            //实际上是不可能的
            return;//不再查询数据
        }
        string subjectGroupNo = o.ToString();

        dbm.Close();
        string          sql1   = "select CourseNo from gcgSubject,gcgCourse where gcgCourse.SubjectNo = gcgSubject.subjectno and Grade = @Grade and subjectGroupNo = @subjectGroupNo";
        ParameterStruct p1     = new ParameterStruct("@Grade", DropDownList_Grade.SelectedValue);
        ParameterStruct p2     = new ParameterStruct("@subjectGroupNo", subjectGroupNo);
        ArrayList       pList1 = new ArrayList();

        pList1.Add(p1);
        pList1.Add(p2);
        SqlDataReader dr           = dbm.ExecuteQueryOnLine(sql1, pList1);
        ArrayList     courseNoList = new ArrayList();

        while (dr.Read())
        {
            courseNoList.Add(dr.GetString(0));
        }
        dr.Close();
        foreach (string courseno in courseNoList)
        {
            string sql_deletefromGcgFeedBack = "delete from gcgFeedBack where CourseNo = '" + courseno + "'";
            dbm.ExecuteNonQuery(sql_deletefromGcgFeedBack, null);
        }
        //如果发现反馈表中已经没有了记录,那么就直接删掉,神不知鬼不觉~
        string sql_checkgcgFeedBack = "select * from gcgFeedBack";
        object isEmpty = dbm.ExecuteScalar(sql_checkgcgFeedBack, null);

        if (isEmpty == null)
        {
            //没有反馈记录了
            string sql_droptable = "drop table gcgFeedBack";
            dbm.ExecuteNonQuery(sql_droptable, null);
        }
        dbm.Close();
        System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('已清除反馈信息!')", true);
        CreateTable();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        //点击增加科目
        //从年级已知,科目号和科目名已知,默认课时为0
        string grade     = DropDownList_Grade.SelectedValue;
        string subjectno = DropDownList2.SelectedValue;

        if (subjectno == "")  //当下拉框已经没有可增加科目时,按钮点击无效
        {
            return;
        }
        string          CourseNo       = grade + subjectno;
        string          courseCount    = "0";
        DBManipulation  dbm            = new DBManipulation();
        string          sql2           = "insert into gcgCourse values(@CourseNo,@SubjectNo,@Grade,@CourseTime)";
        ParameterStruct p3             = new ParameterStruct("@CourseNo", CourseNo + "");
        ParameterStruct p4             = new ParameterStruct("@SubjectNo", subjectno);
        ParameterStruct p5             = new ParameterStruct("@Grade", grade + "");
        ParameterStruct p6             = new ParameterStruct("@CourseTime", courseCount + "");
        ArrayList       parameterList2 = new ArrayList();

        parameterList2.Add(p3);
        parameterList2.Add(p4);
        parameterList2.Add(p5);
        parameterList2.Add(p6);
        dbm.ExecuteNonQuery(sql2, parameterList2);
        dbm.Close();
        SetItemForChoosableCourse();
        this.Page_Load(this, null);
        // Response.Redirect("classTimesArrange.aspx");
    }
    protected void ButtonDelete_Click(object sender, EventArgs e)
    {
        Button b        = (Button)sender;
        string ButtonID = b.ID;
        int    i;

        for (i = 0; i < ButtonLists.Count; i++)
        {
            Button b1 = (Button)ButtonLists[i];
            if (ButtonID.Equals(b1.ID))
            {
                break;
            }
        }
        TableCell      t          = (TableCell)TableCellLists[i];
        string         courseName = t.Text;
        string         grade      = DropDownList_Grade.SelectedValue;
        string         sql1       = "select subjectno from gcgSubject where subjectname ='" + courseName + "'";
        DBManipulation dbm        = new DBManipulation();
        Object         o          = dbm.ExecuteScalar(sql1, null);

        if (o != null)
        {
            string subjectno = o.ToString();
            string sql2      = "delete from gcgCourse where SubjectNo ='" + subjectno + "' and Grade ='" + grade + "'";
            dbm.ExecuteNonQuery(sql2, null);
        }
        dbm.Close();
        SetItemForChoosableCourse();
        this.Page_Load(this, null);
    }
Exemple #4
0
    protected void SetItemForDropDownList_Class()
    {
        string         sql = "select distinct ClassNo,class_name from gcgLectureForm, temp_class where gcgLectureForm.ClassNo = temp_class.class_id and class_grade = '" + DropDownList_Grade.SelectedValue + "'";
        DBManipulation dbm = new DBManipulation();

        DropDownList_class.Items.Clear();

        /*
         * DataSet ds = dbm.ExecuteQueryOffLine(sql, null);
         * DropDownList_class.AutoPostBack = true;
         * DropDownList_class.DataSource = ds.Tables["defaultTable"];
         * DropDownList_class.DataTextField = ds.Tables["defaultTable"].Columns[1].ColumnName;
         * DropDownList_class.DataValueField = ds.Tables["defaultTable"].Columns[0].ColumnName;
         * DropDownList_class.DataBind();
         */
        SqlDataReader dr = dbm.ExecuteQueryOnLine(sql, null);

        while (dr.Read())
        {
            ListItem item = new ListItem(dr.GetString(1), dr.GetString(0));
            DropDownList_class.Items.Add(item);
        }
        dr.Close();
        dbm.Close();
    }
    protected DataSet getItems_unChosedCourse()
    {   //点击该按钮增加科目,从我们的确认按钮来看。确认按钮已经考虑到了新增加学科的情况
        //所以该按钮只需要提供增加现有科目中这个年级还没有上的学科,可选的科目选项从未选择的科目中取
        //步骤:查询当前年级开设的学科的科目,查询该校总共开设的科目,两者做一个差集即可
        //比如说:该校总共开设:语、数、英、物、化、生、政、史、地
        //但是初一以前只开设语、数、英、生、史、地
        //那么两者的差集就是:物、化、政
        //那么就可以从这三门可中选择

        /*  select *
         *  from gcgSubject
         *  where subjectno not in (
         *          select SubjectNo
         *          from gcgCourse
         *          where Grade = '1' )
         */
        string          sqlForChoosableCourse = "select subjectno,subjectname from gcgSubject where subjectno not in(select SubjectNo from gcgCourse where Grade = @Grade)";
        DBManipulation  dbm            = new DBManipulation();
        ParameterStruct p              = new ParameterStruct("@Grade", DropDownList_Grade.SelectedValue);
        ArrayList       parameterLists = new ArrayList();

        parameterLists.Add(p);
        DataSet ds = dbm.ExecuteQueryOffLine(sqlForChoosableCourse, parameterLists);

        dbm.Close();
        return(ds);
    }
    protected void Button_submit_Click(object sender, EventArgs e)
    {   //点击确认,提交课时安排
        //通过 TableCellLists  DropDownLists获得每一条记录的科目名以及课时,通过DropDownList_Grade获得年级
        //步骤:一条一条来看,如果原先有课时安排的,就更新,没有的,就插入
        string         grade = DropDownList_Grade.SelectedValue;
        DBManipulation dbm   = new DBManipulation();

        // Response.Write("<script>alert('有新"+ HasNewCourse+" ')</script>");
        for (int i = 0; i < DropDownLists.Count; i++)
        {
            //步骤一:查询这门科目是否有过旧的课时安排记录
            //注意:一开始没有学科,所以要通过按钮增加学科,此时会保证所有记录都有初始课时分布,所以提交按钮仅仅需要将这些记录更新就行了
            TableCell    tc          = (TableCell)TableCellLists[i];
            DropDownList ddl         = (DropDownList)DropDownLists[i];
            string       courseName  = tc.Text;           //获得科目名
            string       courseCount = ddl.SelectedValue; //获得新的分配课时

            string          SearchSql      = "select CourseNo from gcgCourse,gcgSubject where gcgSubject.subjectno = gcgCourse.SubjectNo and Grade = @Grade and subjectname = @subjectname";
            ParameterStruct p1             = new ParameterStruct("@Grade", grade);
            ParameterStruct p2             = new ParameterStruct("@subjectname", courseName);
            ArrayList       parameterList1 = new ArrayList();
            parameterList1.Add(p1);
            parameterList1.Add(p2);
            Object o        = dbm.ExecuteScalar(SearchSql, parameterList1);
            string CourseNo = o.ToString();
            string sql4     = "update gcgCourse set CourseTime = " + courseCount + " where CourseNo = " + CourseNo;
            dbm.ExecuteNonQuery(sql4, null);
        }
        dbm.Close();
        System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('提交已完成!')", true);
    }
Exemple #7
0
    protected void login_Click(object sender, EventArgs e)
    {                                    //用户点击登入
        string userName = username.Text;
        string token    = password.Text; //Token:令牌
        string sql      = "select * from UserTable where username = @username and token = @token";

        ArrayList       parameterList = new ArrayList();
        ParameterStruct p1            = new ParameterStruct("@username", userName);//设置参数映射列表
        ParameterStruct p2            = new ParameterStruct("@token", token);

        parameterList.Add(p1);
        parameterList.Add(p2);
        DBManipulation dbm = new DBManipulation();

        SqlDataReader dataReader = dbm.ExecuteQueryOnLine(sql, parameterList);

        if (dataReader.HasRows)                        //如果有记录,说明是合法账户
        {
            dataReader.Read();                         //指针后移,读取第一条记录
            string position = dataReader.GetString(3); //获得身份
            Session["username"] = dataReader.GetString(1);
            dataReader.Close();
            dbm.Close();
            switch (position)
            {
            case "教导主任":
                Session["UserRank"] = PermissionEnum.EducationDean;
                Response.Redirect("../educationDean/TimeArrange.aspx");
                break;

            case "学科组长":
                Session["UserRank"]         = PermissionEnum.CourseMaster;
                Session["subjectGroupName"] = "综合组";
                Response.Redirect("../courseMaster/setTeacher.aspx");
                break;

            case "排课组长":
                Session["UserRank"] = PermissionEnum.AcademicDean;
                Response.Redirect("../academicDean/courseArrangement.aspx");
                break;

            case "教师":
                Session["UserRank"] = PermissionEnum.Teacher;
                Response.Redirect("../Teacher/viewSchedule_Class.aspx");
                break;

            default:
                break;
            }
        }
        else
        {
            Response.Redirect("error.aspx");
        }
    }
Exemple #8
0
    /*
     * protected override void OnLoad(EventArgs e)
     * {
     *
     * }
     */
    protected void Page_Load(object sender, EventArgs e)
    {
        //外部添加局部刷新控件
        ScriptManager1.RegisterAsyncPostBackControl(this.DropDownList_Grade);
        ScriptManager1.RegisterAsyncPostBackControl(this.DropDownList_semester);
        ScriptManager1.RegisterAsyncPostBackControl(this.DropDownList_year);
        if (!IsPostBack)
        {
            if (!(LoginAndPermissionChecking.LoginChecking()))
            {
                Response.Redirect("/ErrorPage/error_NotLogin.aspx");
            }
            if (!(LoginAndPermissionChecking.PermissionChecking(PermissionEnum.EducationDean)))
            {
                Response.Redirect("/ErrorPage/error_DeniedPermission.aspx");
            }
            //首先先检查是否有gcgFeedBack这张表,如果不存在就新建
            string         sql_LookForgcgFeedBack = "select * from sysobjects where name = 'gcgFeedBack' and xtype = 'U'";
            DBManipulation dbm = new DBManipulation();
            object         o   = dbm.ExecuteScalar(sql_LookForgcgFeedBack, null);
            if (o == null)
            {
                string sql_CreategcgFeedBack = "create table gcgFeedBack(" +
                                               "class_id char(4) not null," +
                                               "CourseNo char(3) not null," +
                                               "TeacherNo char(8) not null," +
                                               "primary key(class_id, CourseNo)" +
                                               ")";
                dbm.ExecuteNonQuery(sql_CreategcgFeedBack, null);
            }

            /*create table gcgFeedBack(  --排课组内部专用表
             *      class_id char(4) not null,
             *      CourseNo char(3) not null,
             *      TeacherNo char(8) not null,
             *      primary key(class_id,CourseNo)
             * )*/
            //页面第一次载入之前,要查询gcgFeedBack授课安排反馈表,看看是不是还有未确认的反馈信息
            string sql = "select class_id,CourseNo from gcgFeedBack";
            // DBManipulation dbm = new DBManipulation();
            SqlDataReader dr = dbm.ExecuteQueryOnLine(sql, null);
            while (dr.Read())
            {
                string buttonName = dr.GetString(0) + dr.GetString(1);
                //Session[buttonName] = "nameRedButton";//我们使用Session保存有意见的老师安排的css样式
                Session[buttonName] = "aspTableCellBrown2";//把原先红色的恢复成黑色
            }
            dr.Close();
            dbm.Close();
        }

        createtable(GetSemesterNo());
    }
    //生成该年级该学科组所包含的所有科目,为下拉框绑定数据
    protected void ProvideDataForSelectSubject()
    {
        string grade = DropDownList_Grade.SelectedValue;
        //debug1.Text = "年级:" + grade;
        string         subjectGroupName = Label_SubjectGroup.Text;
        string         sql0             = "select subjectGroupNo from gcgSubjectGroup where subjectGroupName ='" + subjectGroupName + "'";
        DBManipulation dbm = new DBManipulation();
        Object         o   = dbm.ExecuteScalar(sql0, null);

        if (o == null)
        {
            //说明没有这个学科组
            System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('没有该学科组存在!')", true);
            return;//不再查询数据
        }
        string subjectGroupNo = o.ToString();

        dbm.Close();
        string          sql1   = "select CourseNo,subjectname from gcgSubject,gcgCourse where gcgCourse.SubjectNo = gcgSubject.subjectno and Grade = @Grade and subjectGroupNo = @subjectGroupNo";
        ParameterStruct p1     = new ParameterStruct("@Grade", grade);
        ParameterStruct p2     = new ParameterStruct("@subjectGroupNo", subjectGroupNo);
        ArrayList       pList1 = new ArrayList();

        pList1.Add(p1);
        pList1.Add(p2);

        /*
         * SqlDataReader dr = dbm.ExecuteQueryOnLine(sql1,pList1);
         * while (dr.Read()) {
         *  ListItem item = new ListItem(dr.GetString(1),dr.GetString(0));
         *  item.Attributes.Add("style", "color:red");
         *  DropDownList_Course.Items.Add(item);
         * }*/

        DataSet ds_Course = dbm.ExecuteQueryOffLine(sql1, pList1);

        DropDownList_Course.AutoPostBack   = true;
        DropDownList_Course.DataSource     = ds_Course.Tables["defaultTable"];
        DropDownList_Course.DataTextField  = ds_Course.Tables["defaultTable"].Columns[1].ColumnName;
        DropDownList_Course.DataValueField = ds_Course.Tables["defaultTable"].Columns[0].ColumnName;
        ListItem item = new ListItem();

        //DropDownList_Subject.SelectedIndex = 0;
        DropDownList_Course.DataBind();
        //要先清洗掉上一个年级残存的老师集合
        foreach (DropDownList d in DropDownList_select)
        {
            d.Items.Clear();
        }
        setDataForEachTeacherDropDownList();
    }
    protected string[] ProvideLessonDataByClass(string _grade, string _class)
    {
        DBManipulation  dbm    = new DBManipulation();
        string          sql2   = "select subjectname,gcgLesson.Timeid from gcgLesson, gcgLectureForm, gcgSchedule, gcgCourse, gcgSubject, temp_class where gcgLesson.LectureNo = gcgLectureForm.LectureNo and gcgLectureForm.CourseNo = gcgCourse.CourseNo and gcgCourse.SubjectNo = gcgSubject.subjectno and gcgLesson.Timeid = gcgSchedule.Timeid and gcgLectureForm.ClassNo = temp_class.class_id and ClassNo = @classv and class_grade = @gradev order by gcgLesson.Timeid";
        ParameterStruct p1     = new ParameterStruct("@gradev", _grade);
        ParameterStruct p2     = new ParameterStruct("@classv", _class);
        ArrayList       _plist = new ArrayList();

        _plist.Add(p1);
        _plist.Add(p2);
        SqlDataReader dr = dbm.ExecuteQueryOnLine(sql2, _plist);

        string[] class_1 = new string[40 + 1];
        int      i       = 1;

        while (dr.Read())
        {
            class_1[i] = dr.GetString(0);
            i++;
        }
        dr.Close();
        dbm.Close();
        return(class_1);
    }
    protected void CreateTheWholeSchedule()
    {
        Table1.Rows.Clear();
        Table1.Rows.Clear();
        TableRow  head = new TableRow();
        TableCell t0   = new TableCell();
        TableCell t1   = new TableCell();

        t1.Text = "星期一";
        TableCell t2 = new TableCell();

        t2.Text = "星期二";
        TableCell t3 = new TableCell();

        t3.Text = "星期三";
        TableCell t4 = new TableCell();

        t4.Text = "星期四";
        TableCell t5 = new TableCell();

        t5.Text = "星期五";
        head.Controls.Add(t0);
        head.Controls.Add(t1);
        head.Controls.Add(t2);
        head.Controls.Add(t3);
        head.Controls.Add(t4);
        head.Controls.Add(t5);
        head.CssClass = "aspTableRow1";
        Table1.Controls.Add(head);
        DBManipulation  dbm    = new DBManipulation();
        string          sql2   = "select subjectname,gcgLesson.Timeid from gcgLesson, gcgLectureForm, gcgSchedule, gcgCourse, gcgSubject, temp_class where gcgLesson.LectureNo = gcgLectureForm.LectureNo and gcgLectureForm.CourseNo = gcgCourse.CourseNo and gcgCourse.SubjectNo = gcgSubject.subjectno and gcgLesson.Timeid = gcgSchedule.Timeid and gcgLectureForm.ClassNo = temp_class.class_id and ClassNo = @classv and class_grade = @gradev order by gcgLesson.Timeid";
        ParameterStruct p1     = new ParameterStruct("@gradev", DropDownList_Grade.SelectedValue);
        ParameterStruct p2     = new ParameterStruct("@classv", DropDownList_class.SelectedValue);
        ArrayList       _plist = new ArrayList();

        _plist.Add(p1);
        _plist.Add(p2);
        SqlDataReader dr = dbm.ExecuteQueryOnLine(sql2, _plist);

        string[] class_1 = new string[40 + 1];
        int      kk      = 0;

        while (dr.Read())
        {
            class_1[kk] = dr.GetString(0);
            kk++;
        }
        dr.Close();
        dbm.Close();
        for (int i = 0; i < 8; i++)
        {
            TableRow tablerow = new TableRow();
            tablerow.CssClass = "aspTableRow2";
            TableCell tc = new TableCell();
            tc.CssClass = "aspTableCell4";//第几节
            tc.Text     = "第" + (i + 1) + "节";
            tablerow.Controls.Add(tc);
            for (int j = 0; j < 5; j++)
            {
                TableCell cell = new TableCell();
                cell.Text     = class_1[i + j * 8];
                cell.CssClass = "aspTableCell2";//具体安排
                tablerow.Controls.Add(cell);
            }
            Table1.Controls.Add(tablerow);
        }
    }
Exemple #12
0
    private void CreateTable()
    {
        /*create table gcgFeedBack(
         *      class_id char(4) not null,
         *      CourseNo char(3) not null,
         *      TeacherNo char(8) not null,
         *      primary key(class_id,CourseNo)
         * )*/
        //首先这也是一个二维表,行显示各个学科,列属性为班级
        //先显示学科
        Table1.Rows.Clear();
        string         sql_hasgcgFeedBackTable = "select * from sysobjects where name = 'gcgFeedBack'and xtype = 'U'";
        DBManipulation dbm         = new DBManipulation();
        object         gcgFeedBack = dbm.ExecuteScalar(sql_hasgcgFeedBackTable, null);

        if (gcgFeedBack == null)  //如果表都不存在,说明教导主任没有反对意见
        {
            this.Button_submit.Visible = false;
            return;
        }
        string sql1 = "select distinct subjectname from gcgFeedBack, gcgCourse, gcgSubject, temp_class, gcgSubjectGroup where gcgFeedBack.CourseNo = gcgCourse.CourseNo and gcgCourse.SubjectNo = gcgSubject.subjectno and gcgSubject.subjectGroupNo = gcgSubjectGroup.subjectGroupNo and temp_class.class_id = gcgFeedBack.class_id and Grade = @Grade and subjectGroupName = @subjectGroupName";

        ParameterStruct p_grade            = new ParameterStruct("@Grade", DropDownList_Grade.SelectedValue);
        ParameterStruct p_subjectGroupName = new ParameterStruct("@subjectGroupName", Label_SubjectGroup.Text);
        ArrayList       plist1             = new ArrayList();

        plist1.Add(p_grade);
        plist1.Add(p_subjectGroupName);

        SqlDataReader dataReader1 = dbm.ExecuteQueryOnLine(sql1, plist1);
        TableRow      tableRow    = new TableRow();

        if (!dataReader1.HasRows)//如果没有反馈,那么什么都不显示
        {
            this.Button_submit.Visible = false;
            return;
        }
        else
        {
            this.Button_submit.Visible = true;
        }
        tableRow.CssClass = "aspTableRow1";
        //先加入一个空格子,这个格子是二维表的左上角的那个方格
        TableCell cell_blank = new TableCell();

        cell_blank.Text = " "; //没有文本显示
                               //  cell_blank.Attributes.Add("onclick", "getdate(this)");
        cell_blank.CssClass = "aspTableCell3";
        tableRow.Controls.Add(cell_blank);
        List <string> courseset = new List <string>();

        courseset.Clear();//习惯性清空
        while (dataReader1.Read())
        {
            TableCell cell_CourseName = new TableCell();
            cell_CourseName.Text = dataReader1.GetString(0); //文本为科目名
                                                             // cell_CourseName.Attributes.Add("onclick", "getdate(this)");
            cell_CourseName.CssClass = "aspTableCell3";
            tableRow.Controls.Add(cell_CourseName);
            courseset.Add(cell_CourseName.Text);//将这个科目名添加到
        }
        Table1.Controls.Add(tableRow);
        dataReader1.Close();
        dbm.Close();
        //---------------------------------------------分割线,自此表头学科一栏生成完毕--------------------------------------------
        //查询某一个年级在该学科组范围内出问题的所有班级
        string sql2 = "select distinct temp_class.class_id,class_name from temp_class,gcgFeedBack,gcgCourse,gcgSubject,gcgSubjectGroup where temp_class.class_id = gcgFeedBack.class_id and gcgFeedBack.CourseNo = gcgCourse.CourseNo and gcgCourse.SubjectNo = gcgSubject.subjectno and gcgSubject.subjectGroupNo = gcgSubjectGroup.subjectGroupNo and class_grade = @Grade and subjectGroupName = @subjectGroupName order by class_id asc";

        SqlDataReader    dataReader2 = dbm.ExecuteQueryOnLine(sql2, plist1);
        List <ClassInfo> classset    = new List <ClassInfo>();

        classset.Clear();
        //班级编号写入链表
        while (dataReader2.Read())
        {
            ClassInfo cdata = new ClassInfo(dataReader2.GetString(0), dataReader2.GetString(1));//存放class_id,class_name
            classset.Add(cdata);
        }
        dataReader2.Close();

        SqlDataReader dataReader3;//准备接受DataReader对象
        string        sql3;

        for (int i = 0; i < classset.Count; i++)
        {
            ClassInfo cinfo = classset[i];
            //依据班级号和学期号查询这些班级在特定时间段的授课记录,一个班一个班的显示数据
            sql3 = "select gcgFeedBack.CourseNo,gcgFeedBack.TeacherNo,TeacherName,subjectName from gcgFeedBack,gcgCourse,gcgSubject,temp_teacher where gcgFeedBack.CourseNo = gcgCourse.CourseNo and gcgFeedBack.TeacherNo = temp_teacher.TeacherNo and gcgCourse.SubjectNo = gcgSubject.subjectno and class_id = @class_id";
            ParameterStruct p_class_id = new ParameterStruct("@class_id", cinfo.No);
            // ParameterStruct p_semester = new ParameterStruct("@SemesterNo", semeterNo);
            ArrayList parameterList3 = new ArrayList();
            parameterList3.Add(p_class_id);
            // parameterList3.Add(p_semester);
            dataReader3 = dbm.ExecuteQueryOnLine(sql3, parameterList3);
            //保存这个班出问题的科目号,科目名与老师号
            List <TeaInfo> tset = new List <TeaInfo>();
            tset.Clear();
            while (dataReader3.Read())
            {
                TeaInfo tdata = new TeaInfo(dataReader3.GetString(1), dataReader3.GetString(2), dataReader3.GetString(3), dataReader3.GetString(0));//no,name,sbj,courseno
                tset.Add(tdata);
            }
            tableRow = new TableRow();
            //tableRow.CssClass = "aspTableRow1";
            //先加入一个班级格子,显示这个班级的名字
            TableCell cell_class = new TableCell();
            cell_class.Text     = cinfo.Name;
            cell_class.CssClass = "aspTableCell";
            tableRow.Controls.Add(cell_class);
            //循环学科链表,为每一行(每一个班)的每一门学科填入对应老师
            for (int j = 0; j < courseset.Count; j++)
            {
                string    s1   = courseset[j];
                TableCell cell = new TableCell();
                //通过遍历这个班的老师链表实现
                foreach (TeaInfo s2 in tset)
                {
                    if (s1.Equals(s2.Sbj))
                    {
                        cell.Text = s2.Name;
                        break;
                    }
                }
                cell.CssClass = "aspTableCell";
                tableRow.Controls.Add(cell);
            }
            Table1.Controls.Add(tableRow);
            dataReader3.Close();//注意每一次循环都会执行一次数据库查询,返回一个DataReader,所以这次循环体执行完之后必须将其关闭,避免占用connection
        }
        dbm.Close();
    }
    private void CreateTableDynamicly()
    {                                        //动态生成表格
        Table_SubjectGroup.Controls.Clear(); //把原先的表全部清干净
        TableCellLists.Clear();              //把保存的上一次的控件引用清理掉,不需要了,这次会生成一个新的表
        DropDownLists.Clear();
        //重新设置表头
        TableRow tableRowHeader = new TableRow();

        tableRowHeader.CssClass = "aspTableRow1";
        TableCell tablecell_subjectNameHeader = new TableCell();

        tablecell_subjectNameHeader.Text     = "科目";
        tablecell_subjectNameHeader.CssClass = "aspTableCell";
        //  tablecell_courseNameHeader.Style.Add() //= "width: 100px";
        TableCell tablecell_subjectGruopHeader = new TableCell();

        tablecell_subjectGruopHeader.Text     = "学科组";
        tablecell_subjectGruopHeader.CssClass = "aspTableCell";
        tableRowHeader.Controls.Add(tablecell_subjectNameHeader);
        tableRowHeader.Controls.Add(tablecell_subjectGruopHeader);
        Table_SubjectGroup.Controls.Add(tableRowHeader);
        //查询所有学科组,将其离线
        DBManipulation dbm             = new DBManipulation();
        string         sql2            = "select subjectGroupNo,subjectGroupName from gcgSubjectGroup";
        DataSet        ds_subjectGroup = dbm.ExecuteQueryOffLine(sql2, null);
        //根据年级查该年级的所有教学科目
        string  sql        = "select subjectno,subjectname,gcgSubject.subjectGroupNo,subjectGroupName from gcgSubject,gcgSubjectGroup where gcgSubject.subjectGroupNo = gcgSubjectGroup.subjectGroupNo";
        DataSet ds_subject = dbm.ExecuteQueryOffLine(sql, null);
        int     count      = 0;

        foreach (DataRow r in ds_subject.Tables["defaultTable"].Rows)
        {
            //准备一个行对象,和两个单元格对象
            TableRow  tableRow = new TableRow();
            TableCell tablecell_subjectName  = new TableCell();
            TableCell tablecell_subjectGroup = new TableCell();
            //第一个单元格存放科目名
            tablecell_subjectName.ID       = "TableCell_CourseName_" + count;
            tablecell_subjectName.Text     = r["subjectname"].ToString();
            tablecell_subjectName.CssClass = "aspTableCell";
            TableCellLists.Add(tablecell_subjectName);     //保存引用
            SubjectnoLists.Add(r["subjectno"].ToString()); //同步保存subjectno
            //第二个单元格存放课时下拉框,记得添加事件处理
            tablecell_subjectGroup.ID       = "TableCell_CourseCount_" + count;
            tablecell_subjectGroup.CssClass = "aspTableCell";
            DropDownList dropDownList = new DropDownList();
            dropDownList.ID = "DropDownCell_" + count;
            //dropDownList.SelectedIndexChanged += DropDownList_CourseCount_TextChanged;//监听事件

            /*
             * dropDownList.AutoPostBack = true;
             * dropDownList.DataSource = ds_subjectGroup.Tables["defaultTable"];
             * dropDownList.DataTextField = ds_subjectGroup.Tables["defaultTable"].Columns[1].ColumnName;
             * dropDownList.DataValueField = ds_subjectGroup.Tables["defaultTable"].Columns[0].ColumnName;
             * dropDownList.DataBind();
             */
            // string subjectname = r["subjectGroupName"].ToString();
            //dropDownList.SelectedItem.Text = subjectname;//下拉框的初始值是以前该科目所属的学科组的组名
            this.DropDownLists.Add(dropDownList);//保存引用,方便其他函数使用
            tablecell_subjectGroup.Controls.Add(dropDownList);

            tableRow.ID       = "TableRow_" + count;
            tableRow.CssClass = "aspTableRow2";
            tableRow.Controls.Add(tablecell_subjectName);
            tableRow.Controls.Add(tablecell_subjectGroup);
            //将这个行放入表中
            Table_SubjectGroup.Controls.Add(tableRow);
            count++;
        }
        //上面已经将表格生成了
        //setItemsForSelectGroup();//为每一个科目的可选学科组下拉框准备数据
        dbm.Close();
    }
Exemple #14
0
    protected void createtable(string semeterNo)
    {
        Table1.Rows.Clear();
        ArrayList buttonlist = new ArrayList();//存放所有按钮的信息
        //形参是学期号,蕴含年份和上下学期
        string grade = DropDownList_Grade.SelectedValue.ToString();
        //查出这个年级的所有学科,以便形成列表头
        //一个年级的学科是没有历史记录的,设定即覆盖
        string          sql1           = "select CourseNo,subjectname from gcgCourse, gcgSubject where gcgCourse.SubjectNo = gcgSubject.subjectno and Grade = @Grade";
        ParameterStruct p_grade        = new ParameterStruct("@Grade", grade);
        ArrayList       parameterList1 = new ArrayList();

        parameterList1.Add(p_grade);
        DBManipulation dbm         = new DBManipulation();
        SqlDataReader  dataReader1 = dbm.ExecuteQueryOnLine(sql1, parameterList1);
        List <string>  courseset   = new List <string>();

        courseset.Clear();//习惯性清空
        if (!dataReader1.HasRows)
        {
            return;
        }
        TableRow tableRow = new TableRow();

        tableRow.CssClass = "aspTableRow1";
        //先加入一个空格子,这个格子是二维表的左上角的那个方格
        TableCell cell_blank = new TableCell();

        cell_blank.Text = " ";//没有文本显示
        //  cell_blank.Attributes.Add("onclick", "getdate(this)");
        cell_blank.CssClass = "aspTableCell3";
        tableRow.Controls.Add(cell_blank);
        // int id = 0;
        while (dataReader1.Read())
        {
            TableCell cell_CourseName = new TableCell();
            cell_CourseName.Text = dataReader1.GetString(1);//文本为科目名
            // cell_CourseName.Attributes.Add("onclick", "getdate(this)");
            cell_CourseName.CssClass = "aspTableCell3";
            tableRow.Controls.Add(cell_CourseName);
            courseset.Add(cell_CourseName.Text);//将这个科目名添加到
        }
        Table1.Controls.Add(tableRow);
        dataReader1.Close();
        dbm.Close();
        //---------------------------------------------分割线,自此表头学科一栏生成完毕--------------------------------------------



        //-------------------------------------------------以下开始按行生成数据----------------------------------------------------
        // ParameterStruct p_year = new ParameterStruct("@year", year+"%");
        ParameterStruct p_semesterNo   = new ParameterStruct("@SemesterNo", semeterNo);
        ArrayList       parameterList2 = new ArrayList();

        parameterList2.Add(p_grade);
        parameterList2.Add(p_semesterNo);
        dbm = new DBManipulation();
        //查询出某一个学期某一个年级的所有班级
        string sql2 = "select distinct class_id,class_name from temp_class,gcgLectureForm where temp_class.class_id = gcgLectureForm.ClassNo and class_grade = @Grade and SemesterNo = @SemesterNo order by class_id asc";

        SqlDataReader    dataReader2 = dbm.ExecuteQueryOnLine(sql2, parameterList2);
        List <ClassInfo> classset    = new List <ClassInfo>();

        classset.Clear();

        //班级编号写入链表
        while (dataReader2.Read())
        {
            ClassInfo cdata = new ClassInfo(dataReader2.GetString(0), dataReader2.GetString(1));//存放class_id,class_name
            classset.Add(cdata);
        }
        dataReader2.Close();

        SqlDataReader dataReader3;//准备接受DataReader对象
        string        sql3;

        //string SemesterNo = GetSemesterNo();
        for (int i = 0; i < classset.Count; i++)
        {
            ClassInfo cinfo = classset[i];
            //依据班级号和学期号查询这些班级在特定时间段的授课记录,一个班一个班的显示数据
            sql3 = "select gcgLectureForm.TeacherNo,TeacherName,subjectname,gcgCourse.CourseNo from gcgLectureForm,gcgCourse,gcgSubject,temp_teacher where gcgCourse.CourseNo = gcgLectureForm.CourseNo and gcgCourse.SubjectNo = gcgSubject.subjectno and temp_teacher.TeacherNo = gcgLectureForm.TeacherNo and ClassNo = @ClassNo and SemesterNo = @SemesterNo";
            ParameterStruct p_classNo      = new ParameterStruct("@ClassNo", cinfo.No);
            ParameterStruct p_semester     = new ParameterStruct("@SemesterNo", semeterNo);
            ArrayList       parameterList3 = new ArrayList();
            parameterList3.Add(p_classNo);
            parameterList3.Add(p_semester);
            dataReader3 = dbm.ExecuteQueryOnLine(sql3, parameterList3);
            //保存这个班在某一个学期的所有老师
            List <TeaInfo> tset = new List <TeaInfo>();
            tset.Clear();
            while (dataReader3.Read())
            {
                TeaInfo tdata = new TeaInfo(dataReader3.GetString(0), dataReader3.GetString(1), dataReader3.GetString(2), dataReader3.GetString(3));//no,name,sbj,courseno
                tset.Add(tdata);
            }
            tableRow = new TableRow();
            //tableRow.CssClass = "aspTableRow1";
            //先加入一个班级格子,显示这个班级的名字
            TableCell cell_class = new TableCell();
            // cell_class.Attributes.Add("onclick", "getdate(this)");
            cell_class.Text = cinfo.Name;
            //   cell_class.ID = "cell_class_" + i + times;
            cell_class.CssClass = "aspTableCell4";
            tableRow.Controls.Add(cell_class);
            //循环学科链表,为每一行(每一个班)的每一门学科填入对应老师
            for (int j = 0; j < courseset.Count; j++)
            {
                string s1 = courseset[j];
                // foreach (string s1 in courseset) {
                TableCell cell = new TableCell();
                cell.CssClass = "aspTableCell";//先设置格子的样式为默认样式
                //  cell.Attributes.Add("onclick", "getdata()");
                //通过遍历这个班的老师链表实现
                foreach (TeaInfo s2 in tset)
                {
                    if (s1.Equals(s2.Sbj))
                    {
                        //    public MyButton(string class_id,string CourseNo,string TeacherNo) {
                        MyButton b = new MyButton(cinfo.No, s2.Courseno, s2.No);
                        b.Text = s2.Name;
                        //bt.Click += new EventHandler(bt_Click);
                        string buttonName = b.Class_id + b.CourseNo1;
                        if (Session[buttonName] == null)
                        {
                            // Session[buttonName] = "namebutton";
                            Session[buttonName] = "aspTableCell";
                        }
                        b.Click += new EventHandler(ButtonForFeedBack_onClick);
                        //  b.CssClass = Session[buttonName].ToString();//如果刷新之前已经有记录,那么直接用之前的样式
                        b.CssClass = "namebutton";
                        buttonlist.Add(b);
                        //cell.Text = s2.Name;// dataReader.GetString(1);
                        cell.Controls.Add(b);
                        cell.CssClass = Session[buttonName].ToString();//看要不要改样式
                        break;
                    }
                }
                tableRow.Controls.Add(cell);
            }
            Table1.Controls.Add(tableRow);
            dataReader3.Close();//注意每一次循环都会执行一次数据库查询,返回一个DataReader,所以这次循环体执行完之后必须将其关闭,避免占用connection
        }
        dbm.Close();
        Session["buttonlist"] = buttonlist;
        // times++;
    }
Exemple #15
0
    protected void CreateTheWholeSchedule()
    {
        string         sql_courseNum   = "select COUNT(*) from gcgCourse where Grade = '" + DropDownList_Grade.SelectedValue + "'";
        DBManipulation dbm             = new DBManipulation();
        Object         obj_countCourse = dbm.ExecuteScalar(sql_courseNum, null);

        if (obj_countCourse == null)
        {//这个年级还没有安排课程计划,无需接着往下了
            System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('没有安排学科!')", true);
            return;
        }
        int count_courseNum = int.Parse(obj_countCourse.ToString());

        if (DropDownList_class.Items.Count == 0)
        {
            //没有班级参与排课,无需接着往下了
            System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('没有班级参与排课!')", true);
            return;
        }
        string sql_checkTime = "select count(*) from gcgSchedule where Grade = " + DropDownList_Grade.SelectedValue;
        Object obj_time      = dbm.ExecuteScalar(sql_checkTime, null);

        if (obj_time.ToString().Equals("0"))
        {
            System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('尚未设置每节课的时间段!')", true);
            return;
        }
        // debug.Text = count_courseNum + "";

        Struct_CourseName[] courseList = new Struct_CourseName[count_courseNum];

        if (courseList == null)
        {
            Response.Redirect("1.aspx");
        }

        //准备科目名与学科号的映射,名字与年级有关,因为不同年级对于同一个科目的学科号是不一样的。,所以必须对应年级。
        string        sql_MappingCourseNoAndCourseName = "select CourseNo,subjectname from gcgCourse,gcgSubject where gcgCourse.SubjectNo = gcgSubject.subjectno and Grade = '" + DropDownList_Grade.SelectedValue + "'";
        SqlDataReader dr00 = dbm.ExecuteQueryOnLine(sql_MappingCourseNoAndCourseName, null);
        Dictionary <string, string> dict_SubjectName_CourseNo = new Dictionary <string, string>();

        while (dr00.Read())
        {
            dict_SubjectName_CourseNo.Add(dr00.GetString(1), dr00.GetString(0));
            //因为年级一旦确定,科目名就与学科号 一 一 对应了
        }
        dr00.Close();
        string dict_SubjectName_CourseNo_Name = "dict_SubjectName_CourseNo" + DropDownList_Grade.SelectedValue;

        Cache[dict_SubjectName_CourseNo_Name] = dict_SubjectName_CourseNo;

        //准备学科号与学科名的映射
        Dictionary <string, string> dict_CourseNo_SubjectName = new Dictionary <string, string>();
        SqlDataReader dr01 = dbm.ExecuteQueryOnLine(sql_MappingCourseNoAndCourseName, null);

        while (dr01.Read())
        {
            dict_CourseNo_SubjectName.Add(dr01.GetString(0), dr01.GetString(1));
        }
        dr01.Close();
        string dict_CourseNo_SubjectName_Name = "dict_CourseNo_SubjectName" + DropDownList_Grade.SelectedValue;

        Cache[dict_CourseNo_SubjectName_Name] = dict_CourseNo_SubjectName;

        //准备班级号与班级名的映射,查询授课安排表中的最新一个学期的某一个年级的班级号与其对应的班级名,肯定是 一 一 对应的。
        string        sql_MappingClassNameAndClassNo       = "select class_name,class_id from temp_class,(select distinct ClassNo from gcgLectureForm where SemesterNo = (select MAX(SemesterNo) from gcgLectureForm)) AS temp where class_id = ClassNo and class_grade = '" + DropDownList_Grade.SelectedValue + "'";
        SqlDataReader dr_MappingClassNameAndClassNo        = dbm.ExecuteQueryOnLine(sql_MappingClassNameAndClassNo, null);
        Dictionary <string, string> dict_ClassName_ClassNo = new Dictionary <string, string>();

        while (dr_MappingClassNameAndClassNo.Read())
        {
            dict_ClassName_ClassNo.Add(dr_MappingClassNameAndClassNo.GetString(0), dr_MappingClassNameAndClassNo.GetString(1));
        }
        dr_MappingClassNameAndClassNo.Close();
        string dict_ClassName_ClassNo_Name = "dict_ClassName_ClassNo" + DropDownList_Grade.SelectedValue;

        Cache[dict_ClassName_ClassNo_Name] = dict_ClassName_ClassNo;


        string        sql_fillCourseList = "select CourseNo,subjectname,CourseTime from gcgCourse,gcgSubject where gcgCourse.SubjectNo = gcgSubject.subjectno and Grade = '" + DropDownList_Grade.SelectedValue + "'";
        SqlDataReader dr1 = dbm.ExecuteQueryOnLine(sql_fillCourseList, null);

        if (dr1 == null)
        {
            Response.Redirect("1.aspx");
        }
        for (int i = 0; i < courseList.Length && dr1.Read(); i++)
        {
            courseList[i]              = new Struct_CourseName();
            courseList[i].CourseNo1    = dr1.GetString(0);
            courseList[i].SubjectName1 = dr1.GetString(1);
            Byte b = dr1.GetByte(2);
            courseList[i].Hour1 = (int)b;
        }
        dr1.Close();
        dbm.Close();
        string sql_countClassNum = "select COUNT(*) from( select distinct ClassNo from gcgLectureForm, temp_class where gcgLectureForm.ClassNo = temp_class.class_id and class_grade = @Grade) AS temp ";
        //为什么上面这一句这么复杂,是为了防止有些班级还没有参与排课计划
        ParameterStruct p_grade = new ParameterStruct("@Grade", DropDownList_Grade.SelectedValue);
        ArrayList       plist1  = new ArrayList();

        plist1.Add(p_grade);
        Object obj_countClassNum = dbm.ExecuteScalar(sql_countClassNum, plist1);

        if (obj_countClassNum == null)
        {
            return;
        }
        int           countClassNum = int.Parse(obj_countClassNum.ToString());
        string        sql_LectureForm_orderByClassNoAndCourseNo = "select ClassNo,gcgLectureForm.CourseNo,gcgLectureForm.TeacherNo,temp_teacher.TeacherName from gcgLectureForm, gcgCourse, gcgSubject, temp_teacher where gcgCourse.CourseNo = gcgLectureForm.CourseNo and gcgCourse.SubjectNo = gcgSubject.subjectno and temp_teacher.TeacherNo = gcgLectureForm.TeacherNo and Grade = @Grade order by gcgLectureForm.ClassNo,gcgLectureForm.CourseNo";
        SqlDataReader dr2    = dbm.ExecuteQueryOnLine(sql_LectureForm_orderByClassNoAndCourseNo, plist1);
        ArrayList     plist2 = new ArrayList();

        TeaInfo[,] teacherArrange = new TeaInfo[countClassNum, count_courseNum];
        for (int i = 0; i < countClassNum; i++)
        {
            for (int j = 0; j < count_courseNum; j++)
            {
                teacherArrange[i, j] = new TeaInfo();
                if (!dr2.HasRows)
                {
                    break;
                }
                else
                {
                    dr2.Read();
                }
                try
                {
                    teacherArrange[i, j].No       = dr2.GetString(2); //教师工号
                    teacherArrange[i, j].Name     = dr2.GetString(3); //教师名
                    teacherArrange[i, j].Courseno = dr2.GetString(1); //学科号,可能是擅长的,可能是非擅长的
                }
                catch (Exception)
                {
                    System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('数据不够,请检查是否已经安排所有班级的老师!')", true);
                    return;
                }
            }
            if (!dr2.HasRows)
            {
                break;
            }
        }
        dr2.Close();
        dbm.Close();

        AutoSchedule auto = new AutoSchedule();

        Cache["auto"]       = auto;
        auto.CourseList     = courseList;
        auto.TeacherArrange = teacherArrange;
        auto.MakingSchedule();
        Tea[,] Lessontable = auto.func();//注意:这个课表的行是一个个班级,列是这个班级一周的额全部课程分布,都是从1开始的
        string lessonTableName = "LessonTable" + DropDownList_Grade.SelectedValue;

        Cache[lessonTableName] = Lessontable;//使用ViewState保存,生命周期为该页面,只要这个页面没有关闭就存在
        if (Lessontable == null)
        {
            Response.Redirect("1.aspx");
        }
        ShowClassTable();
    }
Exemple #16
0
    protected void Button_SubmitSchedule_Click(object sender, EventArgs e)
    {
        if (Cache["auto"] == null)
        {
            System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('请先生成课表。')", true);
            //Response.Write("<script>alert('请先生成课表。')</script>");
            return;
        }
        string lessonTableName = "LessonTable" + DropDownList_Grade.SelectedValue;

        if (Cache[lessonTableName] == null)
        {
            System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('请先生成课表。')", true);
            return;
        }
        string dict_CourseNo_SubjectName_Name = "dict_CourseNo_SubjectName" + DropDownList_Grade.SelectedValue;

        if (Cache[dict_CourseNo_SubjectName_Name] == null)
        {
            System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('请先生成课表。')", true);
            return;
        }
        string dict_SubjectName_CourseNo_Name = "dict_SubjectName_CourseNo" + DropDownList_Grade.SelectedValue;

        if (Cache[dict_SubjectName_CourseNo_Name] == null)
        {
            System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('请先生成课表。')", true);
            return;
        }
        string dict_ClassName_ClassNo_Name = "dict_ClassName_ClassNo" + DropDownList_Grade.SelectedValue;

        if (Cache[dict_ClassName_ClassNo_Name] == null)
        {
            System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('请先生成课表。')", true);
            return;
        }

        Dictionary <string, string> dict_SubjectName_CourseNo = (Dictionary <string, string>)Cache[dict_SubjectName_CourseNo_Name];
        Dictionary <string, string> dict_CourseNo_SubjectName = (Dictionary <string, string>)Cache[dict_CourseNo_SubjectName_Name];
        Dictionary <string, string> dict_ClassName_ClassNo    = (Dictionary <string, string>)Cache[dict_ClassName_ClassNo_Name];

        Tea[,] Lessontable = (Tea[, ])Cache[lessonTableName];
        //以上已获得某一个年级的全部课表,老师号-科目名映射,学科号-科目名映射,班级名和班级号映射

        /*
         *   create table gcgLectureForm(--授课安排表
         *          LectureNo char(7) primary key,--授课安排编号
         *          SemesterNo char(6),--学期号,蕴含年份和上下学期信息
         *          TeacherNo char(8),--教师工号
         *          CourseNo char(3) foreign key references gcgcourse(CourseNo),--学科编号
         *          ClassNo char(4)--班级编号
         *  )
         *  create table gcgLesson(--课表
         *          LectureNo char(7) foreign key references gcgLectureForm(LectureNo),--授课安排编号
         *          --ClassRoomNo char(*)
         *          Timeid char(4) foreign key references gcgSchedule(Timeid),--时间段编号
         *          primary key(LectureNo,Timeid)--表级主码
         *  )
         */
        string          sql_forSemester = "select MAX(SemesterNo) from gcgLectureForm ";
        DBManipulation  dbm             = new DBManipulation();
        object          o          = dbm.ExecuteScalar(sql_forSemester, null);
        string          semesterNo = o.ToString();
        string          grade      = DropDownList_Grade.SelectedValue;
        string          sql_deleteTheSameSemesterRecord = "delete from gcgLesson where LectureNo in ( select LectureNo from gcgLectureForm,temp_class where gcgLectureForm.ClassNo = temp_class.class_id and class_grade = @Grade and SemesterNo = @SemesterNo)";
        ParameterStruct p_grade = new ParameterStruct("@Grade", grade);
        ParameterStruct p_seme  = new ParameterStruct("@SemesterNo", semesterNo);
        ArrayList       palist  = new ArrayList();

        palist.Add(p_grade);
        palist.Add(p_seme);

        dbm.ExecuteNonQuery(sql_deleteTheSameSemesterRecord, palist);

        /*string sql_MappingClassNameAndClassNo =
         * "    select class_name,class_id
         *      from temp_class,(
         *          select distinct ClassNo
         *              from gcgLectureForm
         *                  where SemesterNo = (
         *                      select MAX(SemesterNo)
         *                          from gcgLectureForm)) AS temp
         *      where class_id = ClassNo and class_grade = '" + DropDownList_Grade.SelectedValue + "'";
         */
        string        sql_forClassNo = "select class_id from temp_class,(select distinct ClassNo from gcgLectureForm where SemesterNo = (select MAX(SemesterNo) from gcgLectureForm)) AS temp where class_id = ClassNo and class_grade = '" + DropDownList_Grade.SelectedValue + "'";
        ArrayList     classlist      = new ArrayList();
        SqlDataReader dr             = dbm.ExecuteQueryOnLine(sql_forClassNo, null);

        while (dr.Read())
        {
            classlist.Add(dr.GetString(0));
        }
        dr.Close();
        for (int i = 0; i < classlist.Count; i++)
        {//一个一个班的写入
            //[,]Lessontable一行就存放了一个班的所有记录
            Tea[]    classTable  = new Tea[Lessontable.GetLength(1) + 1];
            string[] courseTable = new string[Lessontable.GetLength(1) + 1];
            for (int t = 0; t < 40; t++)
            {
                classTable[t] = Lessontable[i + 1, t + 1];               //取到某一个班40节课的所有教师工号
                string subjectname = dict_CourseNo_SubjectName[classTable[t].cno];
                courseTable[t] = dict_SubjectName_CourseNo[subjectname]; //取到这四十节课的学科号
            }
            for (int t = 0; t < 40; t++)
            {
                //classlist[i-1]就是对应的班级号
                string          sql_forLectureID = "select LectureNo from gcgLectureForm where SemesterNo = @SemesterNo and ClassNo = @ClassNo and CourseNo = @CourseNo";
                ParameterStruct p_semester       = new ParameterStruct("@SemesterNo", semesterNo);
                ParameterStruct p_classNo        = new ParameterStruct("@ClassNo", (string)classlist[i]);//第i个班级的班级号
                ParameterStruct p_courseNo       = new ParameterStruct("@CourseNo", courseTable[t]);
                ArrayList       plist            = new ArrayList();
                plist.Add(p_semester); plist.Add(p_classNo); plist.Add(p_courseNo);
                Object lectureID = dbm.ExecuteScalar(sql_forLectureID, plist);
                //string Timeid1 = grade + week + "0" + "1";
                string Time_part1 = DropDownList_Grade.SelectedValue;
                int    week       = 0;
                string Time_part3;
                int    temp = t + 1;
                if (temp % 8 == 0)
                {
                    week       = temp / 8;
                    Time_part3 = "0" + 8;
                }
                else
                {
                    week       = temp / 8 + 1;
                    Time_part3 = "0" + (temp - (week - 1) * 8);
                }
                string Time_part2 = week + "";

                // string Time_part3 = "0" + (t - (t / 8) * 8);

                string          sql_insert  = "insert into gcgLesson values(@lectureID,@TimeID)";
                ParameterStruct p_LectureID = new ParameterStruct("@lectureID", lectureID.ToString());
                ParameterStruct p_timeID    = new ParameterStruct("@TimeID", Time_part1 + Time_part2 + Time_part3);//第i个班级的班级号
                ArrayList       plist1      = new ArrayList();
                plist1.Add(p_LectureID);
                plist1.Add(p_timeID);
                dbm.ExecuteNonQuery(sql_insert, plist1);
            }
        }
        dbm.Close();
        System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('课表已保存!')", true);
    }
    private void SelectCourseByGrade()
    {
        Table1.Controls.Clear(); //把原先的表全部清干净,注意动态生成的时候绝对要把全部的行都清掉,否则会出现玄学,仔细检查Rows.count

        TableCellLists.Clear();  //把保存的上一次的控件引用清理掉,不需要了,这次会生成一个新的表
        DropDownLists.Clear();
        string grade = DropDownList_Grade.SelectedValue;
        //重新设置表头
        TableRow tableRowHeader = new TableRow();

        tableRowHeader.CssClass = "aspTableRow1";
        TableCell tablecell_courseNameHeader = new TableCell();

        tablecell_courseNameHeader.Text = "科目";

        //td.Attributes.Add("onclick", "javascript:alert('" + day + "');");
        //tablecell_courseNameHeader.Attributes.Add("onclick", "javascript:alert('1111111111')");
        //这段代码可以给动态生成的TableCell加事件,用来捕捉用户点击

        tablecell_courseNameHeader.CssClass = "aspTableCell";
        TableCell tablecell_courseCountHeader = new TableCell();

        tablecell_courseCountHeader.Text     = "课时";
        tablecell_courseCountHeader.CssClass = "aspTableCell";
        TableCell tablecell_deleteButtonHeader = new TableCell();

        tablecell_deleteButtonHeader.Text     = "操作";
        tablecell_deleteButtonHeader.CssClass = "aspTableCell";
        tableRowHeader.Controls.Add(tablecell_courseNameHeader);
        tableRowHeader.Controls.Add(tablecell_courseCountHeader);
        tableRowHeader.Controls.Add(tablecell_deleteButtonHeader);
        Table1.Controls.Add(tableRowHeader);
        //根据年级查该年级的所有教学科目
        string          sql           = "select CourseNo,subjectname,CourseTime  from gcgCourse, gcgSubject where gcgCourse.SubjectNo = gcgSubject.subjectno and Grade = @Grade";
        ParameterStruct p             = new ParameterStruct("@Grade", grade);
        ArrayList       parameterList = new ArrayList();

        parameterList.Add(p);
        DBManipulation dbm        = new DBManipulation();
        SqlDataReader  dataReader = dbm.ExecuteQueryOnLine(sql, parameterList);
        int            count      = 0;

        //循环增加行
        while (dataReader.Read())
        {
            //准备一个行对象,和三个单元格对象
            TableRow  tableRow               = new TableRow();
            TableCell tablecell_courseName   = new TableCell();
            TableCell tablecell_courseCount  = new TableCell();
            TableCell tablecell_deleteButton = new TableCell();
            //第一个单元格存放科目名
            tablecell_courseName.ID       = "TableCell_CourseName_" + count;
            tablecell_courseName.Text     = dataReader.GetString(1);
            tablecell_courseName.CssClass = "aspTableCell";
            TableCellLists.Add(tablecell_courseName);//保存引用
            //第二个单元格存放课时下拉框,记得添加事件处理
            tablecell_courseCount.ID       = "TableCell_CourseCount_" + count;
            tablecell_courseCount.CssClass = "aspTableCell";
            DropDownList dropDownList = new DropDownList();
            dropDownList.ID = "DropDownCell_" + count;
            dropDownList.SelectedIndexChanged += DropDownList_CourseCount_TextChanged;//监听事件
            dropDownList.AutoPostBack          = true;
            ListItem[] items = new ListItem[9];
            for (int i = 0; i < items.Length; i++)
            {
                items[i] = new ListItem();
                // string str = "     " + i;
                //ListItem.Text = HttpUtility.HtmlDecode("&nbsp;&nbsp;")+">>SubItem1";
                items[i].Text = HttpUtility.HtmlDecode("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;") + i + "";
                //items[i].Text = str;
                items[i].Value = +i + "";
                dropDownList.Items.Add(items[i]);
            }
            int CourseTime = dataReader.GetByte(2);  //注意我们的CourseTime字段是tinyint,是Byte类型,不能用GetString()
            dropDownList.SelectedIndex = CourseTime; //下拉框的初始值
            this.DropDownLists.Add(dropDownList);    //保存引用,方便其他函数使用
            tablecell_courseCount.Controls.Add(dropDownList);
            //第三个单元格存放删除按钮
            tablecell_deleteButton.ID       = "TableButton_" + count;
            tablecell_deleteButton.CssClass = "aspTableCell";
            Button button = new Button();
            button.Text = "删除";
            //button.CommandArgument = button.ID;
            button.CssClass = "button white bigrounded";
            button.ID       = "Button_" + count;
            button.Click   += ButtonDelete_Click;
            ButtonLists.Add(button);
            tablecell_deleteButton.Controls.Add(button);
            //将三个单元格放入行对象内
            tableRow.ID       = "TableRow_" + count;
            tableRow.CssClass = "aspTableRow2";
            tableRow.Controls.Add(tablecell_courseName);
            tableRow.Controls.Add(tablecell_courseCount);
            tableRow.Controls.Add(tablecell_deleteButton);
            //将这个行放入表中
            Table1.Controls.Add(tableRow);
            count++;
        }
        dataReader.Close();
        dbm.Close();
        lessLessonTime.Text = lessHour() + "";//每次生成页面都计算一下剩余课时
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        //ScriptManager1.RegisterAsyncPostBackControl(this.DropDownList_Grade);
        ScriptManager1.RegisterAsyncPostBackControl(this.DropDownList_Course);
        ScriptManager1.RegisterAsyncPostBackControl(this.DropDownList_semester);
        ScriptManager1.RegisterAsyncPostBackControl(this.DropDownList_year);
        if (!IsPostBack)
        {
            if (!(LoginAndPermissionChecking.LoginChecking()))
            {
                Response.Redirect("/ErrorPage/error_NotLogin.aspx");
            }
            if (!(LoginAndPermissionChecking.PermissionChecking(PermissionEnum.CourseMaster)))
            {
                Response.Redirect("/ErrorPage/error_DeniedPermission.aspx");
            }

            Object o = Session["subjectGroupName"];
            if (o == null)
            {
                Response.Redirect("/login/login.aspx");
            }
            else
            {
                //Label_SubjectGroup.Text = Request.QueryString["subjectGroupName"].ToString();
                Label_SubjectGroup.Text = Session["subjectGroupName"].ToString();
            }
            ProvideDataForSelectSubject();

            //页面刚刚载入的时候查询学科表中所有学科的对应课时数,并放置在一张学科课时表中,以待后面使用
            string                    sql_MappingCourseNoAndCourseTime = "select CourseNo,CourseTime from gcgCourse";
            DBManipulation            dbm = new DBManipulation();
            SqlDataReader             dr  = dbm.ExecuteQueryOnLine(sql_MappingCourseNoAndCourseTime, null);
            Dictionary <string, Byte> dict_CourseNo_CourseTime = new Dictionary <string, Byte>();
            while (dr.Read())
            {
                dict_CourseNo_CourseTime.Add(dr.GetString(0), dr.GetByte(1));
            }
            dr.Close();
            dbm.Close();
            Cache["dict_CourseNo_CourseTime"] = dict_CourseNo_CourseTime;

            //同时计算所有老师的授课课时数,放在一个映射表中,以待后面使用
            string    sql_getTeacherSet = "select TeacherNo from temp_teacher";
            DataSet   ds           = dbm.ExecuteQueryOffLine(sql_getTeacherSet, null);
            DataTable teacherTable = ds.Tables["defaultTable"];
            Dictionary <string, int> dict_TeacherNo_CourseTime = new Dictionary <string, int>();
            foreach (DataRow r in teacherTable.Rows)
            {
                string TeacherNo            = r["TeacherNo"].ToString();
                string sql_countTeacherTime = "select sum(CourseTime) from gcgLectureForm,temp_teacher,gcgCourse " +
                                              "where gcgLectureForm.TeacherNo = temp_teacher.TeacherNo " +
                                              "and gcgLectureForm.CourseNo = gcgCourse.CourseNo " +
                                              "and temp_teacher.TeacherNo = '" + TeacherNo + "'";
                //  DBManipulation dbm = new DBManipulation();
                object obj = dbm.ExecuteScalar(sql_countTeacherTime, null);
                if (obj == null || obj.ToString() == "")
                {//还没有给这个老师安排带班
                    dict_TeacherNo_CourseTime[TeacherNo] = 0;
                }
                else
                {
                    dict_TeacherNo_CourseTime[TeacherNo] = int.Parse(obj.ToString());
                }
            }
            Cache["dict_TeacherNo_CourseTime"] = dict_TeacherNo_CourseTime;
            //保存每一个下拉菜单的索引值,方便下面进行课时计算
            CreateTableBasedOnClass();
            setDataForEachTeacherDropDownList();
            foreach (DropDownList l in DropDownList_select)
            {
                Session[l.ID] = l.SelectedIndex;//使用对象的唯一标识符作为唯一ID保存
            }
        }
        //debug1.Text = Request.QueryString["subjectGroupName"].ToString();
        CreateTableBasedOnClass();
        setDataForEachTeacherDropDownList();
        //  Page.MaintainScrollPositionOnPostBack = true;//刷新后滚动条回到之前的位置,但是会导致页面闪烁
    }