private void FillItemPanel()
        {
            itemPanel1.Items.Clear();
            //加入ButtonItem
            foreach (K12.Data.StudentRecord record in _studentList)
            {
                if (record.Status == K12.Data.StudentRecord.StudentStatus.一般)
                {
                    ButtonItem item = new ButtonItem();
                    item.OptionGroup = "student";
                    item.Text        = record.Name;
                    item.Name        = "";

                    if (record.Class != null)
                    {
                        item.Name += "班級:" + record.Class.Name;
                    }

                    item.Name += " 座號:" + record.SeatNo;
                    item.Name += " 學號:" + record.StudentNumber;
                    item.Name += " 姓名:" + record.Name;

                    ConductRecord conductRecord;
                    if (_conductRecordDic.ContainsKey(record.ID))
                    {
                        conductRecord = _conductRecordDic[record.ID];
                    }
                    else
                    {
                        conductRecord = new ConductRecord();
                        conductRecord.RefStudentId = int.Parse(record.ID);
                        conductRecord.SchoolYear   = _schoolYear;
                        conductRecord.Semester     = _semester;
                        ComboBoxItem cboItem = cboTerm.SelectedItem as ComboBoxItem;
                        conductRecord.Term    = _gradeYear == 2 ? cboItem.Value + "" : "";
                        conductRecord.Subject = "";
                    }

                    item.Tag = conductRecord;

                    item.Click += new EventHandler(Item_click);
                    itemPanel1.Items.Add(item);
                }
            }

            itemPanel1.RecalcLayout();
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (itemPanel1.SelectedItems.Count == 1)
            {
                List <string> logStr     = new List <string>();
                ButtonItem    buttonItem = itemPanel1.SelectedItems[0] as ButtonItem;
                ConductRecord record     = buttonItem.Tag as ConductRecord;

                XmlElement root = new XmlDocument().CreateElement("Conducts");
                foreach (DataGridViewRow row in dgv.Rows)
                {
                    string group = row.Cells[colGroup.Index].Value + "";
                    string title = row.Cells[colTitle.Index].Value + "";
                    string grade = row.Cells[colGrade.Index].Value + "";
                    if (row.Cells[colGrade.Index].Tag + "" != row.Cells[colGrade.Index].Value + "")
                    {
                        logStr.Add("項目(" + group + ")" + title + " Grade從『" + row.Cells[colGrade.Index].Tag + "』改為『" + grade + "』");
                    }

                    XmlElement elem = root.SelectSingleNode("//Conduct[@Group=" + Tool.XPathLiteral(group) + "]") as XmlElement;
                    if (elem == null)
                    {
                        elem = root.OwnerDocument.CreateElement("Conduct");
                        elem.SetAttribute("Group", group);
                        root.AppendChild(elem);
                    }

                    XmlElement item = elem.OwnerDocument.CreateElement("Item");
                    item.SetAttribute("Title", title);
                    item.SetAttribute("Grade", grade);

                    elem.AppendChild(item);
                }

                record.Conduct = root.OuterXml;
                record.Save();
                //寫log
                FiscaLogWriter(buttonItem, logStr);
                _dirtyCellList.Clear();
                lblSave.Visible = false;

                MessageBox.Show(buttonItem.Text + " 資料已儲存");
            }
        }
Example #3
0
        public ConductObj(ConductRecord record)
        {
            StudentID = record.RefStudentId + "";

            Student = K12.Data.Student.SelectByID(StudentID);
            Class   = Student.Class;

            if (Student == null)
            {
                Student = new StudentRecord();
            }

            if (Class == null)
            {
                Class = new ClassRecord();
            }

            SubjectList = new List <string>();
        }
        private void Item_click(object sender, EventArgs e)
        {
            bool       alarm = false;
            ButtonItem item  = sender as ButtonItem;

            //切換不同item
            if (!_RunningItem.Equals(item))
            {
                if (lblSave.Visible)
                {
                    if (MessageBox.Show("資料未儲存,確定切換?", "ischool", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                    {
                        _RunningItem.RaiseClick();
                        return;
                    }
                }

                _dirtyCellList.Clear();
                lblSave.Visible  = false;
                _RunningItem     = item;
                groupPanel1.Text = item.Text;

                ConductRecord record = item.Tag as ConductRecord;

                txtComment.Text = record.Comment;

                dgv.Rows.Clear();

                XmlDocument doc = new XmlDocument();
                if (!string.IsNullOrWhiteSpace(record.Conduct))
                {
                    doc.LoadXml(record.Conduct);
                }

                //Console.Write(doc.OuterXml);

                //讀取缺席天數
                //intInput.Value = 0;
                //if (intInput.Enabled)
                //{
                //    XmlElement absence = doc.SelectSingleNode("//Conducts/Absence") as XmlElement;
                //    if(absence != null)
                //    {
                //        int i = 0;
                //        int.TryParse(absence.InnerText, out i);
                //        intInput.Value = i;
                //    }
                //}
                //intInput.Tag = intInput.Value;

                //Check alarm
                foreach (XmlElement first in doc.SelectNodes("//Conduct[@Group]"))
                {
                    string group = first.GetAttribute("Group");
                    foreach (XmlElement second in first.SelectNodes("Item"))
                    {
                        string title = second.GetAttribute("Title");
                        string key   = group + "_" + title;

                        if (!_conductTemplate.Contains(key))
                        {
                            alarm = true;
                        }
                    }
                }

                //巡迴所有需要呈現的conductItem
                foreach (string str in _conductTemplate)
                {
                    string group = str.Split('_')[0];
                    string title = str.Split('_')[1];
                    string grade = "";

                    XmlElement elem = doc.SelectSingleNode("//Conduct[@Group=" + Tool.XPathLiteral(group) + "]/Item[@Title=" + Tool.XPathLiteral(title) + "]") as XmlElement;

                    if (elem != null)
                    {
                        grade = elem.GetAttribute("Grade");
                    }

                    DataGridViewRow row = new DataGridViewRow();
                    row.CreateCells(dgv, group, title, grade);
                    dgv.Rows.Add(row);
                }

                //備份編輯前資料
                foreach (DataGridViewRow row in dgv.Rows)
                {
                    foreach (DataGridViewCell cell in row.Cells)
                    {
                        cell.Tag = cell.Value;
                    }
                }

                txtComment.Tag = txtComment.Text;

                if (alarm)
                {
                    MessageBox.Show("此學生資料有其他的Conduct紀錄,儲存後可能會造成資料遺失");
                }
            }
        }
Example #5
0
        public void LoadRecord(ConductRecord record)
        {
            string subj = record.Subject;

            if (string.IsNullOrWhiteSpace(subj))
            {
                subj = "Homeroom";
            }

            string term = record.Term;

            //Comment
            if (subj == "Homeroom")
            {
                if (term == "1")
                {
                    Comment1 = record.Comment;
                }

                if (term == "2")
                {
                    Comment2 = record.Comment;
                }
            }

            if (!SubjectList.Contains(subj))
            {
                SubjectList.Add(subj);
            }

            //XML
            if (_xdoc == null)
            {
                _xdoc = new XmlDocument();
            }

            _xdoc.RemoveAll();
            if (!string.IsNullOrWhiteSpace(record.Conduct))
            {
                _xdoc.LoadXml(record.Conduct);
            }

            foreach (XmlElement elem in _xdoc.SelectNodes("//Conduct"))
            {
                string group = elem.GetAttribute("Group");

                foreach (XmlElement item in elem.SelectNodes("Item"))
                {
                    string title = item.GetAttribute("Title");
                    string grade = item.GetAttribute("Grade");

                    if (term == "1")
                    {
                        if (!term1.ContainsKey(subj + "_" + group + "_" + title))
                        {
                            term1.Add(subj + "_" + group + "_" + title, grade);
                        }
                    }

                    if (term == "2")
                    {
                        if (!term2.ContainsKey(subj + "_" + group + "_" + title))
                        {
                            term2.Add(subj + "_" + group + "_" + title, grade);
                        }
                    }

                    if (!Template.ContainsKey(subj))
                    {
                        Template.Add(subj, new Dictionary <string, List <string> >());
                    }
                    if (!Template[subj].ContainsKey(group))
                    {
                        Template[subj].Add(group, new List <string>());
                    }
                    if (!Template[subj][group].Contains(title))
                    {
                        Template[subj][group].Add(title);
                    }
                }
            }
        }