private void SaveTemplate(object sender, EventArgs e) { if (Configure == null) { return; } Configure.SchoolYear = cboSchoolYear.Text; Configure.Semester = cboSemester.Text; Configure.SelSetConfigName = cboConfigure.Text; if (Configure.RefenceExamRecord != null && Configure.RefenceExamRecord.Name == "") { Configure.RefenceExamRecord = null; } foreach (ListViewItem item in lvwSubjectName.Items) { if (item.Checked) { if (!Configure.PrintSubjectList.Contains(item.Text)) { Configure.PrintSubjectList.Add(item.Text); } } else { if (Configure.PrintSubjectList.Contains(item.Text)) { Configure.PrintSubjectList.Remove(item.Text); } } } Configure.TagRank1TagList.Clear(); Configure.RankFilterTagList.Clear(); Configure.Encode(); Configure.Save(); #region 樣板設定檔記錄用 // 記錄使用這選的專案 List <DAO.UDT_ScoreConfig> uList = new List <DAO.UDT_ScoreConfig>(); foreach (DAO.UDT_ScoreConfig conf in _UDTConfigList) { if (conf.Type == Global._UserConfTypeName) { conf.Name = cboConfigure.Text; uList.Add(conf); break; } } if (uList.Count > 0) { DAO.UDTTransfer.UpdateConfigData(uList); } else { // 新增 List <DAO.UDT_ScoreConfig> iList = new List <DAO.UDT_ScoreConfig>(); DAO.UDT_ScoreConfig conf = new DAO.UDT_ScoreConfig(); conf.Name = cboConfigure.Text; conf.ProjectName = Global._ProjectName; conf.Type = Global._UserConfTypeName; conf.UDTTableName = Global._UDTTableName; iList.Add(conf); DAO.UDTTransfer.InsertConfigData(iList); } #endregion }
public ConfigForm() { InitializeComponent(); List <ExamRecord> exams = new List <ExamRecord>(); BackgroundWorker bkw = new BackgroundWorker(); bkw.DoWork += delegate { bkw.ReportProgress(1); //預設學年度學期 _DefalutSchoolYear = "" + K12.Data.School.DefaultSchoolYear; _DefaultSemester = "" + K12.Data.School.DefaultSemester; bkw.ReportProgress(10); // 檢查預設樣板是否存在 _UDTConfigList = DAO.UDTTransfer.GetDefaultConfigNameListByTableName(Global._UDTTableName); // 沒有設定檔,建立預設設定檔 if (_UDTConfigList.Count < 2) { bkw.ReportProgress(20); foreach (string name in Global.DefaultConfigNameList()) { Configure cn = new Configure(); cn.Name = name; cn.SchoolYear = K12.Data.School.DefaultSchoolYear; cn.Semester = K12.Data.School.DefaultSemester; DAO.UDT_ScoreConfig conf = new DAO.UDT_ScoreConfig(); conf.Name = name; conf.UDTTableName = Global._UDTTableName; conf.ProjectName = Global._ProjectName; conf.Type = Global._DefaultConfTypeName; _UDTConfigList.Add(conf); // 設預設樣板 switch (name) { case "班級學期成績單13科": cn.Template = new Document(new MemoryStream(Properties.Resources.高中班級學期成績單樣版)); break; case "班級學期成績單24科": cn.Template = new Document(new MemoryStream(Properties.Resources.班級_學期成績單24科50學生)); break; } if (cn.Template == null) { cn.Template = new Document(new MemoryStream(Properties.Resources.高中班級學期成績單樣版)); } try { List <string> fields = new List <string>(cn.Template.MailMerge.GetFieldNames()); cn.SubjectLimit = 0; while (fields.Contains("科目名稱" + (cn.SubjectLimit + 1))) { cn.SubjectLimit++; } cn.StudentLimit = 0; while (fields.Contains("姓名" + (cn.StudentLimit + 1))) { cn.StudentLimit++; } } catch (Exception ex) { } cn.Encode(); cn.Save(); } if (_UDTConfigList.Count > 0) { DAO.UDTTransfer.InsertConfigData(_UDTConfigList); } } bkw.ReportProgress(40); _Configures = _AccessHelper.Select <Configure>(); //學生類別清單 _TagConfigRecords = K12.Data.TagConfig.SelectByCategory(TagCategory.Student); #region 整理所有試別對應科目 bkw.ReportProgress(60); // 取得班級學生(一般生) List <string> ClassStudentIDList = DAO.QueryData.GetClassStudentIDByClassID(K12.Presentation.NLDPanels.Class.SelectedSource); AccessHelper accessHelper = new AccessHelper(); List <SmartSchool.Customization.Data.StudentRecord> StudentRecList = accessHelper.StudentHelper.GetStudents(ClassStudentIDList); bkw.ReportProgress(70); // 放入學生學期成績 accessHelper.StudentHelper.FillSemesterSubjectScore(true, StudentRecList); bkw.ReportProgress(80); // 取得科目名稱 foreach (SmartSchool.Customization.Data.StudentRecord stud in StudentRecList) { foreach (SemesterSubjectScoreInfo ss in stud.SemesterSubjectScoreList) { string key = ss.SchoolYear + "^^" + ss.Semester; if (!_ExamSubjectFull.ContainsKey(key)) { _ExamSubjectFull.Add(key, new List <string>()); } if (!_ExamSubjectFull[key].Contains(ss.Subject)) { _ExamSubjectFull[key].Add(ss.Subject); } } } bkw.ReportProgress(90); foreach (var list in _ExamSubjectFull.Values) { #region 排序 //list.Sort(new StringComparer("國文","國語文" // , "英文", "英語文" // , "數學" // , "理化" // , "生物" // , "社會" // , "物理" // , "化學" // , "歷史" // , "地理" // , "公民")); list.Sort(new StringComparer(Utility.GetSubjectOrder().ToArray())); #endregion } #endregion bkw.ReportProgress(100); }; bkw.WorkerReportsProgress = true; bkw.ProgressChanged += delegate(object sender, ProgressChangedEventArgs e) { circularProgress1.Value = e.ProgressPercentage; }; bkw.RunWorkerCompleted += delegate { if (Configure == null) { Configure = new Configure(); } cboConfigure.Items.Clear(); foreach (var item in _Configures) { cboConfigure.Items.Add(item); } cboConfigure.Items.Add(new Configure() { Name = "新增" }); int i; if (int.TryParse(_DefalutSchoolYear, out i)) { for (int j = 0; j < 5; j++) { cboSchoolYear.Items.Add("" + (i - j)); } } cboSemester.Items.Add("1"); cboSemester.Items.Add("2"); List <string> prefix = new List <string>(); List <string> tag = new List <string>(); foreach (var item in _TagConfigRecords) { if (item.Prefix != "") { if (!prefix.Contains(item.Prefix)) { prefix.Add(item.Prefix); } } else { tag.Add(item.Name); } } circularProgress1.Hide(); if (_Configures.Count > 0) { string userSelectConfigName = ""; // 檢查畫面上是否有使用者選的 foreach (DAO.UDT_ScoreConfig conf in _UDTConfigList) { if (conf.Type == Global._UserConfTypeName) { userSelectConfigName = conf.Name; break; } } cboConfigure.Text = userSelectConfigName; } else { cboConfigure.SelectedIndex = -1; } }; bkw.RunWorkerAsync(); }