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 + " 資料已儲存"); } }
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紀錄,儲存後可能會造成資料遺失"); } } }
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); } } } }