Ejemplo n.º 1
0
        /// <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
        }
Ejemplo n.º 4
0
        /// <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);
        }