/// <summary> /// 將學生填入DataGridView。 /// </summary> private void FillStudentsToDataGridView() { dgv.SuspendLayout(); dgv.Rows.Clear(); _scAttendRecordList.Sort(SCAttendComparer); foreach (var record in _scAttendRecordList) { JHStudentRecord student = record.Student; DataGridViewRow row = new DataGridViewRow(); row.CreateCells(dgv, (student.Class != null) ? student.Class.Name : "", student.SeatNo, student.Name, student.StudentNumber ); dgv.Rows.Add(row); SCAttendTag tag = new SCAttendTag(); tag.SCAttend = record; row.Tag = tag; //加入 StudentID 與 Row 的對應 if (!_studentRowDict.ContainsKey(student.ID)) { _studentRowDict.Add(student.ID, row); } } dgv.ResumeLayout(); }
/// <summary> /// 從DataGridView上取得SCETakeRecordEditors /// </summary> /// <returns></returns> //private List<SCETakeRecordEditor> MakeSCETakeRecordEditors() //{ // if (cboExamList.SelectedItem == null) return new List<SCETakeRecordEditor>(); // List<SCETakeRecordEditor> list = new List<SCETakeRecordEditor>(); // ExamComboBoxItem item = cboExamList.SelectedItem as ExamComboBoxItem; // ExamRecord exam = item.AEIncludeRecord.Exam; // foreach (DataGridViewRow row in dgv.Rows) // { // SCAttendTag tag = row.Tag as SCAttendTag; // if (tag.SCETake != null) // { // #region 修改or刪除 // bool is_remove = true; // SCETakeRecordEditor editor = tag.SCETake.GetEditor(); // if (chInputScore.Visible == true) // { // string value = "" + row.Cells[chInputScore.Index].Value; // is_remove &= string.IsNullOrEmpty(value); // if (!string.IsNullOrEmpty(value)) // editor.Score = decimal.Parse(value); // } // if (chInputEffort.Visible == true) // { // string value = "" + row.Cells[chInputEffort.Index].Value; // is_remove &= string.IsNullOrEmpty(value); // if (!string.IsNullOrEmpty(value)) // editor.Effort = int.Parse(value); // } // if (chInputText.Visible == true) // { // string value = "" + row.Cells[chInputText.Index].Value; // is_remove &= string.IsNullOrEmpty(value); // editor.Text = value; // } // editor.Remove = is_remove; // list.Add(editor); // #endregion // } // else // { // #region 新增 // bool is_add = false; // SCETakeRecordEditor editor = new SCETakeRecordEditor(tag.SCAttend, exam); // if (chInputScore.Visible == true) // { // string value = "" + row.Cells[chInputScore.Index].Value; // if (!string.IsNullOrEmpty(value)) // { // editor.Score = decimal.Parse(value); // is_add = true; // } // } // if (chInputEffort.Visible == true) // { // string value = "" + row.Cells[chInputEffort.Index].Value; // if (!string.IsNullOrEmpty(value)) // { // editor.Effort = int.Parse(value); // is_add = true; // } // } // if (chInputText.Visible == true) // { // string value = "" + row.Cells[chInputText.Index].Value; // if (!string.IsNullOrEmpty(value)) // { // editor.Text = value; // is_add = true; // } // } // if (is_add) list.Add(editor); // #endregion // } // } // return list; //} /// <summary> /// 從DataGridView上取得 HC.JHSCETakeRecord /// </summary> /// <returns></returns> private RecordIUDLists GetRecords() { if (cboExamList.SelectedItem == null) { return(new RecordIUDLists()); } RecordIUDLists lists = new RecordIUDLists(); ExamComboBoxItem item = cboExamList.SelectedItem as ExamComboBoxItem; JHExamRecord exam = item.AEIncludeRecord.Exam; foreach (DataGridViewRow row in dgv.Rows) { SCAttendTag tag = row.Tag as SCAttendTag; if (tag.SCETake != null) { HC.JHSCETakeRecord record = tag.SCETake; #region 修改or刪除 bool is_remove = true; if (chInputScore.Visible == true) { string value = ("" + row.Cells[chInputScore.Index].Value).Trim(); if (PluginMain.ScoreTextMap.ContainsKey(value)) { value = PluginMain.ScoreTextMap[value].UseValue.ToString(); } is_remove &= string.IsNullOrEmpty(value); if (!string.IsNullOrEmpty(value)) { record.Score = decimal.Parse(value); } // 小郭, 2013/12/30 else { record.Score = null; } } if (chInputAssignmentScore.Visible == true) { string value = ("" + row.Cells[chInputAssignmentScore.Index].Value).Trim(); if (PluginMain.ScoreTextMap.ContainsKey(value)) { value = PluginMain.ScoreTextMap[value].UseValue.ToString(); } is_remove &= string.IsNullOrEmpty(value); if (!string.IsNullOrEmpty(value)) { record.AssignmentScore = decimal.Parse(value); } // 小郭, 2013/12/30 else { record.AssignmentScore = null; } } if (chInputText.Visible == true) { string value = "" + row.Cells[chInputText.Index].Value; is_remove &= string.IsNullOrEmpty(value); record.Text = value; } if (is_remove) { lists.DeleteList.Add(record); } else { lists.UpdateList.Add(record); } #endregion } else { #region 新增 bool is_add = false; JHSchool.Data.JHSCETakeRecord jh = new JHSchool.Data.JHSCETakeRecord(); HC.JHSCETakeRecord record = new HC.JHSCETakeRecord(jh); record.RefCourseID = tag.SCAttend.Course.ID; record.RefExamID = exam.ID; record.RefSCAttendID = tag.SCAttend.ID; record.RefStudentID = tag.SCAttend.Student.ID; record.Score = null; record.AssignmentScore = null; record.Text = string.Empty; if (chInputScore.Visible == true) { string value = ("" + row.Cells[chInputScore.Index].Value).Trim(); if (PluginMain.ScoreTextMap.ContainsKey(value)) { value = PluginMain.ScoreTextMap[value].UseValue.ToString(); } if (!string.IsNullOrEmpty(value)) { record.Score = decimal.Parse(value); is_add = true; } } if (chInputAssignmentScore.Visible == true) { string value = ("" + row.Cells[chInputAssignmentScore.Index].Value).Trim(); if (PluginMain.ScoreTextMap.ContainsKey(value)) { value = PluginMain.ScoreTextMap[value].UseValue.ToString(); } if (!string.IsNullOrEmpty(value)) { record.AssignmentScore = decimal.Parse(value); is_add = true; } } if (chInputText.Visible == true) { string value = "" + row.Cells[chInputText.Index].Value; if (!string.IsNullOrEmpty(value)) { record.Text = value; is_add = true; } } if (is_add) { lists.InsertList.Add(record); } #endregion } } return(lists); }
/// <summary> /// 取得成績並填入DataGridView /// </summary> private void GetScoresAndFill(HC.JHAEIncludeRecord aeIncludeRecord) { _dirtyCellList.Clear(); lblSave.Visible = false; #region 清空所有評量欄位及SCETakeRecord foreach (DataGridViewRow row in dgv.Rows) { row.Cells[chInputScore.Index].Value = row.Cells[chInputAssignmentScore.Index].Value = row.Cells[chInputText.Index].Value = null; (row.Tag as SCAttendTag).SCETake = null; } #endregion #region 取得成績並填入 //foreach (var record in QuerySCETake.GetSCETakeRecords(_course.ID, aeIncludeRecord.RefExamID)) //{ //} List <HC.JHSCETakeRecord> list = JHSchool.Data.JHSCETake.SelectByCourseAndExam(_course.ID, aeIncludeRecord.RefExamID).AsHCJHSCETakeRecords(); foreach (var record in list) { if (_studentRowDict.ContainsKey(record.RefStudentID)) { DataGridViewRow row = _studentRowDict[record.RefStudentID]; row.Cells[chInputScore.Index].Value = record.Score; row.Cells[chInputScore.Index].Tag = record.Score; if (record.Score.HasValue && record.Score.Value < 0) { if (PluginMain.ScoreValueMap.ContainsKey(record.Score.Value)) { row.Cells[chInputScore.Index].Value = PluginMain.ScoreValueMap[record.Score.Value].UseText; row.Cells[chInputScore.Index].Tag = PluginMain.ScoreValueMap[record.Score.Value].UseText; } } row.Cells[chInputAssignmentScore.Index].Value = record.AssignmentScore; row.Cells[chInputAssignmentScore.Index].Tag = record.AssignmentScore; if (record.AssignmentScore.HasValue && record.AssignmentScore.Value < 0) { if (PluginMain.ScoreValueMap.ContainsKey(record.AssignmentScore.Value)) { row.Cells[chInputAssignmentScore.Index].Value = PluginMain.ScoreValueMap[record.AssignmentScore.Value].UseText; row.Cells[chInputAssignmentScore.Index].Tag = PluginMain.ScoreValueMap[record.AssignmentScore.Value].UseText; } } row.Cells[chInputText.Index].Value = record.Text; row.Cells[chInputText.Index].Tag = record.Text; if (record.Score < 60) { row.Cells[chInputScore.Index].Style.ForeColor = Color.Red; } if (record.Score > 100 || record.Score < 0) { row.Cells[chInputScore.Index].Style.ForeColor = Color.Green; } else { row.Cells[chInputScore.Index].Style.ForeColor = Color.Black; } if (record.AssignmentScore < 60) { row.Cells[chInputAssignmentScore.Index].Style.ForeColor = Color.Red; } if (record.AssignmentScore > 100 || record.AssignmentScore < 0) { row.Cells[chInputAssignmentScore.Index].Style.ForeColor = Color.Green; } else { row.Cells[chInputAssignmentScore.Index].Style.ForeColor = Color.Black; } SCAttendTag tag = row.Tag as SCAttendTag; tag.SCETake = record; } else { #region 除錯用,別刪掉 //StudentRecord student = Student.Instance.Items[record.RefStudentID]; //if (student == null) // MsgBox.Show("系統編號「" + record.RefStudentID + "」的學生不存在…"); //else //{ // string className = (student.Class != null) ? student.Class.Name + " " : ""; // string seatNo = string.IsNullOrEmpty(className) ? "" : (string.IsNullOrEmpty(student.SeatNo) ? "" : student.SeatNo + " "); // string studentNumber = string.IsNullOrEmpty(student.StudentNumber) ? "" : " (" + student.StudentNumber + ")"; // MsgBox.Show(className + seatNo + student.Name + studentNumber, "這個學生有問題喔…"); //} #endregion } } #endregion }
/// <summary> /// 從DataGridView上取得SCETakeRecordEditors /// </summary> /// <returns></returns> private List <SCETakeRecordEditor> MakeSCETakeRecordEditors() { if (cboExamList.SelectedItem == null) { return(new List <SCETakeRecordEditor>()); } List <SCETakeRecordEditor> list = new List <SCETakeRecordEditor>(); ExamComboBoxItem item = cboExamList.SelectedItem as ExamComboBoxItem; ExamRecord exam = item.AEIncludeRecord.Exam; foreach (DataGridViewRow row in dgv.Rows) { SCAttendTag tag = row.Tag as SCAttendTag; if (tag.SCETake != null) { #region 修改or刪除 bool is_remove = true; SCETakeRecordEditor editor = tag.SCETake.GetEditor(); if (chInputScore.Visible == true) { string value = "" + row.Cells[chInputScore.Index].Value; is_remove &= string.IsNullOrEmpty(value); if (!string.IsNullOrEmpty(value)) { editor.Score = decimal.Parse(value); } } if (chInputEffort.Visible == true) { string value = "" + row.Cells[chInputEffort.Index].Value; is_remove &= string.IsNullOrEmpty(value); if (!string.IsNullOrEmpty(value)) { editor.Effort = int.Parse(value); } } if (chInputText.Visible == true) { string value = "" + row.Cells[chInputText.Index].Value; is_remove &= string.IsNullOrEmpty(value); editor.Text = value; } editor.Remove = is_remove; list.Add(editor); #endregion } else { #region 新增 bool is_add = false; SCETakeRecordEditor editor = new SCETakeRecordEditor(new PrivateSCAttendRecord(tag.SCAttend), exam); if (chInputScore.Visible == true) { string value = "" + row.Cells[chInputScore.Index].Value; if (!string.IsNullOrEmpty(value)) { editor.Score = decimal.Parse(value); is_add = true; } } if (chInputEffort.Visible == true) { string value = "" + row.Cells[chInputEffort.Index].Value; if (!string.IsNullOrEmpty(value)) { editor.Effort = int.Parse(value); is_add = true; } } if (chInputText.Visible == true) { string value = "" + row.Cells[chInputText.Index].Value; if (!string.IsNullOrEmpty(value)) { editor.Text = value; is_add = true; } } if (is_add) { list.Add(editor); } #endregion } } return(list); }