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 Button2_Click(object sender, EventArgs e) {//删除一个学科组,先将组内的学科设为待定组 // string sql2 = "select subjectGroupNo,subjectGroupName from gcgSubjectGroup"; //string sql1 = "select subjectno from gcgSubject where subjectGroupNo in (select subjectGroupNo from gcgSubjectGroup where subjectGroupName = @subjectGroupName)"; string subjectGroupNo = DropDownList1.SelectedValue; DBManipulation dbm = new DBManipulation(); string sql1 = "select subjectGroupNo from gcgSubjectGroup where subjectGroupName = '待定'"; Object o = dbm.ExecuteScalar(sql1, null); string subjectGroup_DefalutNo = o.ToString(); string sql2 = "select subjectno from gcgSubject where subjectGroupNo ='" + subjectGroupNo + "'"; DataSet ds = dbm.ExecuteQueryOffLine(sql2, null); DataTable t = ds.Tables["defaultTable"]; foreach (DataRow r in t.Rows) { string subjectno = r["subjectno"].ToString(); string sql3 = "update gcgSubject set subjectGroupNo = @subjectGroupNo where subjectno = @subjectno"; ParameterStruct p1 = new ParameterStruct("@subjectGroupNo", subjectGroup_DefalutNo); ParameterStruct p2 = new ParameterStruct("@subjectno", subjectno); ArrayList p = new ArrayList(); p.Add(p1); p.Add(p2); dbm.ExecuteNonQuery(sql3, p); } string sql = "delete from gcgSubjectGroup where subjectGroupNo = '" + subjectGroupNo + "'"; dbm.ExecuteNonQuery(sql, null); setItem_deleteDropDownList();//为删除下拉框提供新的数据 this.Page_Load(this, null); }
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"); }
/// <summary> /// Create an instance of IParameter depending on parameter type definied in the arm template /// </summary> /// <param name="objectType"></param> /// <param name="jObject"></param> /// <returns></returns> protected override Parameter Create(Type objectType, JObject jObject) { var type = jObject[_type].ToString(); var allowedValues = jObject[_allowedValuesKey]; var defaultValue = jObject[_defaultValue]; switch (type) { case "string": return(new ParameterClass <string>() { AllowedValues = (allowedValues != null && allowedValues.HasValues) ? new List <string>(allowedValues?.Values <string>()) : null, DefaultValue = defaultValue?.Value <string>() }); case "int": var pInt = new ParameterStruct <int>("int"); if (allowedValues != null && allowedValues.HasValues) { pInt.AllowedValues = new List <int>(allowedValues.Values <int>()); } if (defaultValue != null && defaultValue.HasValues) { pInt.DefaultValue = defaultValue.Value <int>(); } return(pInt); } return(new Parameter()); }
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); }
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 SetValueForHtmlTextBox() { string grade = DropDownList_Grade.SelectedValue; string week = DropDownList_Week.SelectedValue; //select * from gcgSchedule where Grade = '1' and DayNo = '1' string sql1 = "select LessonNo,StartH,StartM,EndH,EndM from gcgSchedule where Grade = @Grade and DayNo = @DayNo order by LessonNo"; ParameterStruct p1 = new ParameterStruct("@Grade", grade); ParameterStruct p2 = new ParameterStruct("@DayNo", week); ArrayList plist1 = new ArrayList(); plist1.Add(p1); plist1.Add(p2); DBManipulation dbm = new DBManipulation(); // SqlDataReader dr = dbm.ExecuteQueryOnLine(sql1, plist1); DataSet ds = dbm.ExecuteQueryOffLine(sql1, plist1); DataTable schedule = ds.Tables["defaultTable"]; if (schedule.Rows.Count == 0) { return; } string[] startTime = new string[8]; string[] endTime = new string[8]; for (int i = 0; i < 8; i++) { string startH = schedule.Rows[i][1].ToString(); if (startH.Length == 1) { startH = "0" + startH; } string startM = schedule.Rows[i][2].ToString(); if (startM.Length == 1) { startM = "0" + startM; } string endH = schedule.Rows[i][3].ToString(); if (endH.Length == 1) { endH = "0" + endH; } string endM = schedule.Rows[i][4].ToString(); if (endM.Length == 1) { endM = "0" + endM; } startTime[i] = startH + ":" + startM; endTime[i] = endH + ":" + endM; } this.TextBox_11.Text = startTime[0]; this.TextBox_12.Text = endTime[0]; this.TextBox_21.Text = startTime[1]; this.TextBox_22.Text = endTime[1]; this.TextBox_31.Text = startTime[2]; this.TextBox_32.Text = endTime[2]; this.TextBox_41.Text = startTime[3]; this.TextBox_42.Text = endTime[3]; this.TextBox_51.Text = startTime[4]; this.TextBox_52.Text = endTime[4]; this.TextBox_61.Text = startTime[5]; this.TextBox_62.Text = endTime[5]; this.TextBox_71.Text = startTime[6]; this.TextBox_72.Text = endTime[6]; this.TextBox_81.Text = startTime[7]; this.TextBox_82.Text = endTime[7]; }
protected void Button_AddSubjectGroup_Click(object sender, EventArgs e) {//增加学科组 string subjectGroupName = TextBox_SubjectGroup.Text; string subjectGroupId; DBManipulation dbm = new DBManipulation(); string sql1 = "select subjectGroupNo from gcgSubjectGroup order by subjectGroupNo"; DataSet ds_subjectGroup = dbm.ExecuteQueryOffLine(sql1, null); int i = 0, j; bool mark = true; //一个标志量 for (i = 1; i < 90; i++) //学科组号仅有2位 { mark = true; for (j = 0; j < ds_subjectGroup.Tables["defaultTable"].Rows.Count; j++) { string str = ds_subjectGroup.Tables["defaultTable"].Rows[j]["subjectGroupNo"].ToString(); char[] ch = str.ToCharArray(); if (ch[0] == '0') { str = ch[1] + ""; } if (i == int.Parse(str)) { mark = false; break; } } if (mark) //如果没有任何一个id相等,那么这个就是可用id { break; } } if (i < 10) { subjectGroupId = "0" + i; } else { Response.Write("<script>alert('i > 10')</script>"); subjectGroupId = i + ""; } string sql2 = "insert into gcgSubjectGroup values(@subjectGroupNo,@subjectGroupName,null)"; ParameterStruct p1 = new ParameterStruct("@subjectGroupNo", subjectGroupId); ParameterStruct p2 = new ParameterStruct("@subjectGroupName", subjectGroupName); ArrayList parameterlist = new ArrayList(); parameterlist.Add(p1); parameterlist.Add(p2); debug1.Text = subjectGroupId; debug2.Text = subjectGroupName; dbm.ExecuteNonQuery(sql2, parameterlist); CreateTableDynamicly(); //生成表 setItemsForSelectGroup(); //为每一个科目的可选学科组下拉框准备数据 setItem_deleteDropDownList(); //为删除下拉框生成数据 TextBox_SubjectGroup.Text = ""; }
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"); } }
//生成该年级该学科组所包含的所有科目,为下拉框绑定数据 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 void ButtonForFeedBack_onClick(object sender, EventArgs e) { MyButton button = (MyButton)sender; string buttonName = button.Class_id + button.CourseNo1; if (Session[buttonName] == null || Session[buttonName].ToString().Equals("aspTableCell")) { Session[buttonName] = "aspTableCellBrown2";//用session记录这个Button被点击过 //插入反馈记录 /*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 sql = "insert into gcgFeedBack values(@class_id,@CourseNo,@TeacherNo)"; ParameterStruct p_classid = new ParameterStruct("@class_id", button.Class_id); ParameterStruct p_courseno = new ParameterStruct("@CourseNo", button.CourseNo1); ParameterStruct p_teacherno = new ParameterStruct("@TeacherNo", button.TeacherNo1); ArrayList plist = new ArrayList(); plist.Add(p_classid); plist.Add(p_courseno); plist.Add(p_teacherno); DBManipulation dbm = new DBManipulation(); try { dbm.ExecuteNonQuery(sql, plist); } catch (Exception) { } } else { Session[buttonName] = "aspTableCell"; string sql = "delete from gcgFeedBack where class_id = @class_id and CourseNo = @CourseNo"; ParameterStruct p_classid = new ParameterStruct("@class_id", button.Class_id); ParameterStruct p_courseno = new ParameterStruct("@CourseNo", button.CourseNo1); //ParameterStruct p_teacherno = new ParameterStruct("@TeacherNo", button.TeacherNo1); ArrayList plist = new ArrayList(); plist.Add(p_classid); plist.Add(p_courseno); //plist.Add(p_teacherno); DBManipulation dbm = new DBManipulation(); dbm.ExecuteNonQuery(sql, plist); // Session.Remove(name); } createtable(GetSemesterNo()); }
//但是,注意这里由于sql是通用的,所以外界必然采用sql拼接的方式,无法使用参数化查询 //因为没办法预先判断到底有多少参数,嗯,这种说法好像不成立。。。 //也许可以这样做,sql语句用?作为占位符,就像JSP一样,并且同时传入一个参数List //然后接收到了这个字符串后,进行检查,将所有的?都替换成参数 //然后再循环遍历list进行参数的映射 //考虑使用一个数据结构,结构内有参数名,参数值两个属性 //随着_sql传递进来的是一个该类对象的list public void SetParameter(SqlCommand _command, ArrayList _parameterList) { //该函数设置参数映射 if (_parameterList == null) { return;//如果用户没有使用参数化查询 } for (int i = 0; i < _parameterList.Count; i++) { ParameterStruct p = (ParameterStruct)_parameterList[i]; // _command.Parameters[p.ParameterName].Value = p.ValueName; _command.Parameters.AddWithValue(p.ParameterName, p.ValueName); } }
protected void ButtonSubmit_Click(object sender, EventArgs e) { string subjectGroupNo; string subjectNo; DBManipulation dbm = new DBManipulation(); for (int i = 0; i < TableCellLists.Count; i++) { TableCell c = (TableCell)TableCellLists[i]; DropDownList d = (DropDownList)DropDownLists[i]; subjectNo = (string)SubjectnoLists[i]; subjectGroupNo = d.SelectedValue; string sql = "update gcgSubject set subjectGroupNo = @subjectGroupNo where subjectno = @subjectno"; ParameterStruct p1 = new ParameterStruct("@subjectGroupNo", subjectGroupNo); ParameterStruct p2 = new ParameterStruct("@subjectno", subjectNo); ArrayList parameterlist = new ArrayList(); parameterlist.Add(p1); parameterlist.Add(p2); dbm.ExecuteNonQuery(sql, parameterlist); } System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('修改已完成!')", true); }
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() { 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(); }
protected void Button_submit_Click(object sender, EventArgs e) { //点击确认按钮,写入数据库 //首先检查是否该年级该门学科所有班级都已经分配了老师,如果没有,则不允许插入,并弹窗提醒 foreach (DropDownList d in DropDownList_select) { if (d.SelectedValue == "-1") { System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('尚未完成所有班级的教师安排!')", true); return; } } // Response.Write("<script>alert('aaa')</script>"); string year = DropDownList_year.SelectedValue; string semester = DropDownList_semester.SelectedValue; string semesterNo = year + semester; //得到学期号 DBManipulation dbm = new DBManipulation(); string sql1 = "select class_id,class_name from temp_class where class_grade = '" + DropDownList_Grade.SelectedValue + "'"; DataSet ds_class = dbm.ExecuteQueryOffLine(sql1, null); DataTable classTable = ds_class.Tables["defaultTable"]; for (int i = 0; i < TableCellList_class.Count; i++) { TableCell tc = (TableCell)TableCellList_class[i]; string className = tc.Text; string classNo = ""; //查询班级编号 foreach (DataRow r in classTable.Rows) { if (className.Equals(r["class_name"].ToString())) { classNo = r["class_id"].ToString(); break; } } DropDownList d = (DropDownList)DropDownList_select[i]; string TeacherNo = d.SelectedValue; /* * if (TeacherNo.Equals("-1")) {//如果教师号为-1,说明还没有安排老师,不写入 * continue; * } */ //得到教师工号 string courseNo = DropDownList_Course.SelectedValue; //得到学科号 /*主码,前2位代表年份,一位代表年级+学期(初一1,2 初二3,4 初三5,6),2位代表班级,2位代表学科*/ string LectureNo_part1 = year.Substring(2); string LectureNo_part2 = ""; switch (DropDownList_Grade.SelectedValue) { case "1": { if (DropDownList_semester.SelectedValue.Equals("01")) { LectureNo_part2 = "1"; } else { LectureNo_part2 = "2"; } break; } case "2": { if (DropDownList_semester.SelectedValue.Equals("01")) { LectureNo_part2 = "3"; } else { LectureNo_part2 = "4"; } break; } case "3": { if (DropDownList_semester.SelectedValue.Equals("01")) { LectureNo_part2 = "5"; } else { LectureNo_part2 = "6"; } break; } } /*主码,前2位代表年份,一位代表年级+学期(初一1,2 初二3,4 初三5,6),2位代表班级,2位代表学科*/ string LectureNo_part3 = classNo.Substring(2); string LectureNo_part4 = courseNo.Substring(1); string LectureNo = LectureNo_part1 + LectureNo_part2 + LectureNo_part3 + LectureNo_part4; //得到授课记录主码 //查询gcgLectureForm看是不是已经记录了这条记录,如果存在,则删除 string sql3 = "select * from gcgLectureForm where LectureNo ='" + LectureNo + "'"; Object o = dbm.ExecuteScalar(sql3, null); if (o != null) { string sql4 = "delete from gcgLectureForm where LectureNo ='" + LectureNo + "'"; dbm.ExecuteNonQuery(sql4, null); } /*create table gcgLectureForm(--授课安排表 * LectureNo char(7) primary key,--授课安排编号 * SemesterNo char(6),--学期号 201601 * TeacherNo char(8),--教师工号 * CourseNo char(3) ,--学科编号 * ClassNo char(4)--班级编号 * )*/ string sql2 = "insert into gcgLectureForm values(@LectureNo,@SemesterNo,@TeacherNo,@CourseNo,@ClassNo)"; ParameterStruct p1 = new ParameterStruct("@LectureNo", LectureNo); ParameterStruct p2 = new ParameterStruct("@SemesterNo", semesterNo); ParameterStruct p3 = new ParameterStruct("@TeacherNo", TeacherNo); ParameterStruct p4 = new ParameterStruct("@CourseNo", courseNo); ParameterStruct p5 = new ParameterStruct("@ClassNo", classNo); ArrayList plist1 = new ArrayList(); plist1.Add(p1); plist1.Add(p2); plist1.Add(p3); plist1.Add(p4); plist1.Add(p5); dbm.ExecuteNonQuery(sql2, plist1); } System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Button6_Click", "alert('修改已完成!')", true); }
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); } }
//基于班级,动态生成表 protected void CreateTableBasedOnClass() { Table1.Controls.Clear(); //把原先的表全部清干净 TableCellList_class.Clear(); //把保存的上一次的控件引用清理掉,不需要了,这次会生成一个新的表 DropDownList_select.Clear(); //重新设置表头 TableRow tableRowHeader = new TableRow(); tableRowHeader.CssClass = "aspTableRow1"; TableCell tablecell_classNameHeader = new TableCell(); tablecell_classNameHeader.Text = "班级"; tablecell_classNameHeader.CssClass = "aspTableCell"; // tablecell_courseNameHeader.Style.Add() //= "width: 100px"; TableCell tablecell_SelectTeacherHeader = new TableCell(); tablecell_SelectTeacherHeader.Text = "授课教师"; tablecell_SelectTeacherHeader.CssClass = "aspTableCell"; tableRowHeader.Controls.Add(tablecell_classNameHeader); tableRowHeader.Controls.Add(tablecell_SelectTeacherHeader); Table1.Controls.Add(tableRowHeader); //开始生成正文 //先把班级表查出来 class_id class_name class_grade //select * from string grade = DropDownList_Grade.SelectedValue; //string grade = "01"; string sql1 = "select * from temp_class where class_grade = @Grade"; ParameterStruct p1 = new ParameterStruct("@Grade", grade); ArrayList pList1 = new ArrayList(); pList1.Add(p1); DBManipulation dbm = new DBManipulation(); DataSet ds_class = dbm.ExecuteQueryOffLine(sql1, pList1); //现在ds_class里面有一个defaultTable存放了temp_class的全部内容 DataTable t_class = ds_class.Tables["defaultTable"]; foreach (DataRow r in t_class.Rows) { TableRow newRow = new TableRow(); TableCell cell_class = new TableCell(); cell_class.Text = r["class_name"].ToString(); // tablecell_subjectName.CssClass = "aspTableCell"; cell_class.CssClass = "aspTableCell"; TableCellList_class.Add(cell_class); TableCell cell_selectTeacher = new TableCell(); cell_selectTeacher.CssClass = "aspTableCell"; DropDownList dropDownList_selectTeacher = new DropDownList(); //DropDownList_SelectTeacher dropDownList_selectTeacher.SelectedIndexChanged += DropDownList_SelectTeacher; dropDownList_selectTeacher.AutoPostBack = true; DropDownList_select.Add(dropDownList_selectTeacher); cell_selectTeacher.Controls.Add(dropDownList_selectTeacher); newRow.Controls.Add(cell_class); newRow.Controls.Add(cell_selectTeacher); Table1.Controls.Add(newRow); } }
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(); }
/// <summary> /// Target method to be injected. /// </summary> /// <param name="p1">Test parameter 1.</param> /// <param name="p2">Test parameter 2.</param> /// <param name="p3">Test parameter 3.</param> /// <param name="p4">Test parameter 4.</param> /// <param name="p5">Test parameter 5.</param> /// <param name="p6">Test parameter 6.</param> /// <param name="p7">Test parameter 7.</param> /// <param name="p8">Test parameter 8.</param> /// <param name="p9">Test parameter 9.</param> /// <param name="p10">Test parameter 10.</param> /// <param name="p11">Test parameter 11.</param> /// <param name="p12">Test parameter 12.</param> /// <param name="p13">Test parameter 13.</param> /// <param name="p14">Test parameter 14.</param> /// <param name="p15">Test parameter 15.</param> /// <param name="p16">Test parameter 16.</param> /// <param name="p17">Test parameter 17.</param> /// <param name="p18">Test parameter 18.</param> /// <param name="p19">Test parameter 19.</param> /// <param name="p20">Test parameter 20.</param> /// <returns>Some meaningless value.</returns> internal static StringBuilder Test(int p1, string p2, object p3, StringBuilder p4, ParameterObject p5, ParameterStruct p6, Action p7, Func <object> p8, int[] p9, IReadOnlyList <string> p10, int p11, string p12, object p13, StringBuilder p14, ParameterObject p15, ParameterStruct p16, Action p17, Func <object> p18, int[] p19, IReadOnlyList <string> p20) { return(new StringBuilder("Test")); }
protected void Update() { // Response.Write("<script>alert('nihao')</script>"); int i; ArrayList startTime = new ArrayList(); ArrayList endTime = new ArrayList(); DBManipulation dbm = new DBManipulation(); string grade = DropDownList_Grade.SelectedValue; string week = DropDownList_Week.SelectedValue; string sql1 = "delete from gcgSchedule where Grade = @Grade and DayNo =@DayNo"; ParameterStruct p1 = new ParameterStruct("@Grade", grade); ParameterStruct p2 = new ParameterStruct("@DayNo", week); ArrayList plist1 = new ArrayList(); plist1.Add(p1); plist1.Add(p2); dbm.ExecuteNonQuery(sql1, plist1); string starttime1 = TextBox_11.Text; string endtime1 = TextBox_12.Text; string Timeid1 = grade + week + "0" + "1"; string[] stime1 = starttime1.Split(':'); string[] etime1 = endtime1.Split(':'); string sql11 = "insert into gcgSchedule values('" + Timeid1 + "'," + week + "," + grade + "," + 1 + "," + stime1[0] + "," + etime1[0] + "," + stime1[1] + "," + etime1[1] + ")"; dbm.ExecuteNonQuery(sql11, null); string starttime2 = TextBox_21.Text; string endtime2 = TextBox_22.Text; string Timeid2 = grade + week + "0" + "2"; string[] stime2 = starttime2.Split(':'); string[] etime2 = endtime2.Split(':'); string sql112 = "insert into gcgSchedule values('" + Timeid2 + "'," + week + "," + grade + "," + 1 + "," + stime2[0] + "," + etime2[0] + "," + stime2[1] + "," + etime2[1] + ")"; dbm.ExecuteNonQuery(sql112, null); string starttime3 = TextBox_31.Text; string endtime3 = TextBox_32.Text; string Timeid3 = grade + week + "0" + "3"; string[] stime3 = starttime3.Split(':'); string[] etime3 = endtime3.Split(':'); string sql113 = "insert into gcgSchedule values('" + Timeid3 + "'," + week + "," + grade + "," + 1 + "," + stime3[0] + "," + etime3[0] + "," + stime3[1] + "," + etime3[1] + ")"; dbm.ExecuteNonQuery(sql113, null); string starttime4 = TextBox_41.Text; string endtime4 = TextBox_42.Text; string Timeid4 = grade + week + "0" + "4"; string[] stime4 = starttime4.Split(':'); string[] etime4 = endtime4.Split(':'); string sql114 = "insert into gcgSchedule values('" + Timeid4 + "'," + week + "," + grade + "," + 1 + "," + stime4[0] + "," + etime4[0] + "," + stime4[1] + "," + etime4[1] + ")"; dbm.ExecuteNonQuery(sql114, null); string starttime5 = TextBox_51.Text; string endtime5 = TextBox_52.Text; string Timeid5 = grade + week + "0" + "5"; string[] stime5 = starttime5.Split(':'); string[] etime5 = endtime5.Split(':'); string sql115 = "insert into gcgSchedule values('" + Timeid5 + "'," + week + "," + grade + "," + 1 + "," + stime5[0] + "," + etime5[0] + "," + stime5[1] + "," + etime5[1] + ")"; dbm.ExecuteNonQuery(sql115, null); string starttime6 = TextBox_61.Text; string endtime6 = TextBox_62.Text; string Timeid6 = grade + week + "0" + "6"; string[] stime6 = starttime5.Split(':'); string[] etime6 = endtime6.Split(':'); string sql116 = "insert into gcgSchedule values('" + Timeid6 + "'," + week + "," + grade + "," + 1 + "," + stime6[0] + "," + etime6[0] + "," + stime6[1] + "," + etime6[1] + ")"; dbm.ExecuteNonQuery(sql116, null); string starttime7 = TextBox_71.Text; string endtime7 = TextBox_72.Text; string Timeid7 = grade + week + "0" + "7"; string[] stime7 = starttime6.Split(':'); string[] etime7 = endtime7.Split(':'); string sql117 = "insert into gcgSchedule values('" + Timeid7 + "'," + week + "," + grade + "," + 1 + "," + stime7[0] + "," + etime7[0] + "," + stime7[1] + "," + etime7[1] + ")"; dbm.ExecuteNonQuery(sql117, null); string starttime8 = TextBox_81.Text; string endtime8 = TextBox_82.Text; string Timeid8 = grade + week + "0" + "8"; string[] stime8 = starttime7.Split(':'); string[] etime8 = endtime8.Split(':'); string sql118 = "insert into gcgSchedule values('" + Timeid8 + "'," + week + "," + grade + "," + 1 + "," + stime8[0] + "," + etime8[0] + "," + stime8[1] + "," + etime8[1] + ")"; dbm.ExecuteNonQuery(sql118, null); }
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++; }
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(" ")+">>SubItem1"; items[i].Text = HttpUtility.HtmlDecode(" ") + 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 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); }
protected void setDataForEachTeacherDropDownList() { if (DropDownList_Course.Items.Count == 0) { //说明没有课,停止查询 return; } string courseNo = DropDownList_Course.SelectedValue;//注意这里选出来的是学科号 // debug1.Text = "courseNo:"+courseNo; // Response.Write("<script>alert('" + courseNo + "')</script>");\ string subjectno = courseNo.Substring(1);//学科号的后两位是科目号,因为我们的学科Id就是按照这样的规则计算出来的 string sql_forA = "select TeacherNo,TeacherName from temp_teacher where SubjectA ='" + subjectno + "' order by TeacherNo asc"; DBManipulation dbm = new DBManipulation(); DataSet ds_teacher_A = dbm.ExecuteQueryOffLine(sql_forA, null);//查询出所有可以教这门课的擅长老师 string sql_forB = "select TeacherNo,TeacherName from temp_teacher where SubjectB ='" + subjectno + "' order by TeacherNo asc"; string className = ""; DataSet ds_teacher_B = dbm.ExecuteQueryOffLine(sql_forB, null);//查询出所有可以教这门课的非擅长老师 Dictionary <string, int> dict_TeacherNo_CourseTime = (Dictionary <string, int>)Cache["dict_TeacherNo_CourseTime"]; for (int i = 0; i < DropDownList_select.Count; i++) { DropDownList d = (DropDownList)DropDownList_select[i]; d.Items.Clear(); d.ID = DropDownList_Grade.SelectedValue + DropDownList_Course.SelectedValue + i; ///这里可以排个版 foreach (DataRow teacher_A in ds_teacher_A.Tables["defaultTable"].Rows) { ListItem item = new ListItem(teacher_A[1].ToString() + " " + dict_TeacherNo_CourseTime[teacher_A[0].ToString()], teacher_A[0].ToString()); //ListItem item = new ListItem(itemText, teacher_A[0].ToString()); item.Attributes.Add("style", "color:red"); d.Items.Add(item); } foreach (DataRow teacher_B in ds_teacher_B.Tables["defaultTable"].Rows) { ListItem item = new ListItem(teacher_B[1].ToString() + " " + dict_TeacherNo_CourseTime[teacher_B[0].ToString()], teacher_B[0].ToString()); item.Attributes.Add("style", "color:blue"); d.Items.Add(item); } int count_Teacher = ds_teacher_A.Tables["defaultTable"].Rows.Count + ds_teacher_B.Tables["defaultTable"].Rows.Count; //干脆下标为count_Teacher的就作为默认待定项吧,如果数据库里面没有给这个班分配老师,就设置为待定 ListItem default_item = new ListItem("待定", "-1"); d.Items.Add(default_item); //d.Items.Insert(d.Items.Count, new ListItem( "待定","-1")); //debug1.Text = d.Items.Count.ToString(); TableCell tc = (TableCell)TableCellList_class[i]; /* if (Session[d.UniqueID] == null) * {//不能使用UniqueID,这个是系统自动生成的,下一次页面刷新会重新赋予新的值! * d.SelectedIndex = index;//如果o != null,那么不管怎么样总是会拿到一个索引值 * } * else { * d.SelectedIndex = (int)Session[d.UniqueID]; * }*/ if (Session[d.ID] != null) { d.SelectedIndex = (int)Session[d.ID]; } else { className = tc.Text; string grade = DropDownList_Grade.SelectedValue; string sql2 = "select class_id from temp_class where class_name = @ClassName and class_grade = @Grade"; ParameterStruct p1 = new ParameterStruct("@ClassName", className); ParameterStruct p2 = new ParameterStruct("@Grade", grade); ArrayList plist1 = new ArrayList(); plist1.Add(p1); plist1.Add(p2); Object o = dbm.ExecuteScalar(sql2, plist1); string classNo = o.ToString(); // string sql1 = "select TeacherNo,TeacherName from temp_teacher where SubjectA ='" + subjectno + "'"; string sql3 = "select gcgLectureForm.TeacherNo from gcgLectureForm,temp_teacher where gcgLectureForm.TeacherNo = temp_teacher.TeacherNo and ClassNo = @class_id and CourseNo = @CourseNo"; ParameterStruct p3 = new ParameterStruct("@class_id", classNo); ParameterStruct p4 = new ParameterStruct("@CourseNo", courseNo); ArrayList plist2 = new ArrayList(); plist2.Add(p3); plist2.Add(p4); Object o1 = dbm.ExecuteScalar(sql3, plist2); int index = 0; if (o1 != null) { string DefaultTeacherNo = o1.ToString();//拿到这个班这门课原先定下的老师的工号 //先检查这个老师的这门科目是不是擅长的 bool isSubjectA = false; DataTable ta = ds_teacher_A.Tables["defaultTable"]; for (index = 0; index < ta.Rows.Count; index++) { if (DefaultTeacherNo.Equals(ta.Rows[index]["TeacherNo"].ToString())) { isSubjectA = true;//是擅长的 break; } } if (!isSubjectA) {//否则检查是不是非擅长的 DataTable tb = ds_teacher_B.Tables["defaultTable"]; for (index = 0; index < tb.Rows.Count; index++) { if (DefaultTeacherNo.Equals(tb.Rows[index]["TeacherNo"].ToString())) { break; } } } } else {//如果这个班真的没有分配过老师 index = count_Teacher; } d.SelectedIndex = index;//如果o != null,那么不管怎么样总是会拿到一个索引值 Session[d.ID] = index; } } }