private void Save(ConductSetting setting, DataGridView dgv) { XmlDocument doc = new XmlDocument(); doc.LoadXml(setting.Conduct); //刪除帶有Common屬性的node foreach (XmlNode node in doc.SelectNodes("//Conduct[@Common]")) doc.DocumentElement.RemoveChild(node); List<string> check_list = new List<string>(); foreach (DataGridViewRow row in dgv.Rows) { if (row.IsNewRow) continue; string group = row.Cells[colGroup.Index].Value + ""; string title = row.Cells[colTitle.Index].Value + ""; string common = row.Cells[colCommon.Index].Value + "" == "True" ? "True" : "False"; string key = group + "_" + title; //搜尋具有common屬性,且group名稱符合的node XmlElement elem = doc.SelectSingleNode("//Conduct[@Group=" + Tool.XPathLiteral(group) + "][@Common]") as XmlElement; //node不存在代表需新增並append if (elem == null) { elem = doc.CreateElement("Conduct"); elem.SetAttribute("Group", group); elem.SetAttribute("Common", common); doc.DocumentElement.AppendChild(elem); } //同group避免重複add相同item if (!check_list.Contains(key)) { XmlElement item = doc.CreateElement("Item"); item.SetAttribute("Title", title); elem.AppendChild(item); check_list.Add(key); } } setting.Conduct = doc.OuterXml; setting.Save(); }
public ConductSettingForm() { InitializeComponent(); _A = new AccessHelper(); List<ConductSetting> allConductList = _A.Select<ConductSetting>(); foreach (ConductSetting record in allConductList) { if (record.Grade == 1) { _Grade1 = record; } else if (record.Grade == 2) { _Grade2 = record; } else if (record.Grade == 3) { _Grade3 = record; } else if (record.Grade == 4) { _Grade4 = record; } else if (record.Grade <= 6) { _MediumGrade = record; } else { _HighGrade = record; } } if (_Grade1 == null) { _Grade1 = new ConductSetting(1); _Grade1.Save(); } if (_Grade2 == null) { _Grade2 = new ConductSetting(2); _Grade2.Save(); } if (_Grade3 == null) { _Grade3 = new ConductSetting(3); _Grade3.Save(); } if (_Grade4 == null) { _Grade4 = new ConductSetting(4); _Grade4.Save(); } if (_MediumGrade == null) { _MediumGrade = new ConductSetting(6); _MediumGrade.Save(); } if (_HighGrade == null) { _HighGrade = new ConductSetting(12); _HighGrade.Save(); } }
private void btnSave_Click(object sender, EventArgs e) { //刪除科目不存在的ConductTemplate foreach (XmlNode node in _doc.SelectNodes("//Conduct[@Subject]")) { XmlElement elem = node as XmlElement; string subject = elem.GetAttribute("Subject"); if (!_subjects.Contains(subject)) { _doc.DocumentElement.RemoveChild(node); } } //最後被編輯的item先將資料存到tag if (itemPanle1.SelectedItems.Count == 1) { itemPanle1.SelectedItems[0].Tag = new ButtonTag(dgv); } foreach (ButtonItem buttonItem in itemPanle1.Items) { //buttonItem.Tag == ""代表此item從未被編輯過 if (buttonItem.Tag + "" != "") { string subject = buttonItem.Text; //刪除該subject的節點 foreach (XmlNode node in _doc.SelectNodes("//Conduct[@Subject=" + Tool.XPathLiteral(subject) + "]")) { _doc.DocumentElement.RemoveChild(node); } ButtonTag tag = buttonItem.Tag as ButtonTag; List <string> check_list = new List <string>(); //foreach (DataGridViewRow row in dgv.Rows) foreach (DataGridViewRow row in tag.Rows) { if (row.IsNewRow) { continue; } string group = row.Cells[colGroup.Index].Value + ""; string title = row.Cells[colTitle.Index].Value + ""; string key = group + "_" + title; XmlElement newElem = _doc.SelectSingleNode("//Conduct[@Group=" + Tool.XPathLiteral(group) + "][@Subject=" + Tool.XPathLiteral(subject) + "]") as XmlElement; if (newElem == null) { newElem = _doc.CreateElement("Conduct"); newElem.SetAttribute("Group", group); newElem.SetAttribute("Subject", subject); _doc.DocumentElement.AppendChild(newElem); } //同group避免重複add相同item if (!check_list.Contains(key)) { XmlElement item = newElem.OwnerDocument.CreateElement("Item"); item.SetAttribute("Title", title); //newElem.SetAttribute("Group", group); newElem.AppendChild(item); check_list.Add(key); } } } } _setting.Conduct = _doc.OuterXml; _setting.Save(); this.Close(); }