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