Beispiel #1
0
 private void DeleteRecord_Click(object sender, EventArgs e)               //кнопка удаления записи из XML-файла
 {
     if (dataGridView1.RowCount > 1)                                       //если в DataGridView есть данные, т.е. файл, из которого они загружены, не пустой и корректный
     {
         DataGridViewSelectedRowCollection d = dataGridView1.SelectedRows; //получаем коллекцию выделенных пользователем строк
         //DataGridViewSelectedCellCollection c = dataGridView1.SelectedCells;
         if (d.Count == 1)                                                 //пока мы можем удалить только строку за раз (хотя можно и групповое удаление сделать, если очень надо)
         {
             foreach (DataGridViewRow r in d)
             {
                 try
                 {
                     XMLToHTML.RemoveRecordFromXMLDocument(r.Index);
                 }
                 catch (InvalidOperationException) { }
             }
         }
         else
         {
             MessageBox.Show("Можно удалить только одну строку за раз.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Stop);
         }
         //dataGridView1.ClearSelection();
     }
     ClearDataGridView();         //очищаем DataGridView
     LoadRecordsToDataGridView(); //загружаем обновлённые данные из файла в DataGridView
     dataGridView1.Refresh();
 }
Beispiel #2
0
        private void OpenXML_Click(object sender, EventArgs e) //кнопка открытия XML-файла
        {
            OpenXMLDialog.ShowDialog();                        //показываем диалог открытия файла
            if (OpenXMLDialog.FileName != "")                  //если пользователь выбрал файл
            {
                try
                {
                    XMLToHTML.SetPathToXMLDocument(OpenXMLDialog.FileName); //запоминаем путь к файлу
                    LoadRecordsToDataGridView();                            //загружаем записи из файла в DataGridView

                    SaveXML.Enabled       = true;                           //когда пользователь выбрал файл, данные кнопки становятся активными
                    ConvertToHTML.Enabled = true;
                    DeleteRecord.Enabled  = true;
                    AddRecord.Enabled     = true;
                    //SaveXMLAs.Enabled = true;
                }
                catch (Exception ex)
                {
                    string[] s = { "что-то пошло не так при открытии...", ex.Message, "", "" };

                    dataGridView1.Rows.Add(s);
                    dataGridView1.Refresh();
                }
            }
        }
Beispiel #3
0
        public static void AddNewRecordToXMLDocument(Record record)                                //Добавление новой записи в XML-документ
        {
            if (_path != "")                                                                       //если путь к файлу указан
            {
                originalXml.Load(_path);                                                           //загружаем документ
                XmlNode      menu     = originalXml.SelectSingleNode("//bookstore");               //выбираем главный узел
                XmlNode      newSub   = originalXml.CreateNode(XmlNodeType.Element, "book", null); //создаём новый дочерний узел book
                XmlAttribute category = originalXml.CreateAttribute("category");                   //создаём атрибут category
                category.Value = record.Category;                                                  //присваиваем ему значение
                newSub.Attributes.Append(category);                                                //добавляем атрибут в узел

                //string[] s = {"title", "author", "price"};
                //foreach (string str in s)

                XmlNode title = originalXml.CreateNode(XmlNodeType.Element, "title", null);   //заголовок
                title.InnerText = record.Title;
                newSub.AppendChild(title);                                                    //добавляем заголовок
                XmlNode author = originalXml.CreateNode(XmlNodeType.Element, "author", null); //автор
                author.InnerText = record.Author;                                             //  todo: разделить авторов
                newSub.AppendChild(author);                                                   //добавляем автора
                XmlNode price = originalXml.CreateNode(XmlNodeType.Element, "price", null);   //цена
                price.InnerText = record.Price;
                newSub.AppendChild(price);                                                    //добавляем цену
                menu.AppendChild(newSub);                                                     //добавляем созданный узел с атрибутами в XML-файл
                XMLToHTML.SaveXMLDocument();                                                  //сохраняем документ
            }
        }
Beispiel #4
0
        private void button1_Click(object sender, EventArgs e)
        {
            // todo: проверить на непустые
            Record r = new Record(textBoxCategory.Text, textBoxTitle.Text, textBoxAuthor.Text, textBoxPrice.Text);

            //создаём новую запись, используя данные из textbox-ов
            XMLToHTML.AddNewRecordToXMLDocument(r); //добавляем запись в документ
            this.Close();                           //закрываем форму
        }
Beispiel #5
0
 private void ConvertToHTML_Click(object sender, EventArgs e) //кнопка конвертации XML в HTML
 {
     MessageBox.Show("После нажатия кнопки OK откроется диалоговое окно. Пожалуйста, выберите шаблон файла для конвертации (в формате XSL).", "Выбор шаблона", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
     openXSLDialog.ShowDialog(); //открываем диалог, в котором пользователь должен выбрать шаблон конвертации
     if (openXSLDialog.FileName != "")
     {
         XMLToHTML.ConvertToHTML(openXSLDialog.FileName);                               //если пользователь выбрал шаблон - конвертируем текущий файл в HTML
     }
     MessageBox.Show("Созданный HTML-отчёт находится по адресу " + Environment.CurrentDirectory, "Отчёт успешно создан!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
 }
Beispiel #6
0
        public static void RemoveRecordFromXMLDocument(int index) //Удаление записи из XML-документа
        {
            originalXml.Load(_path);
            XmlNode menu = originalXml.SelectSingleNode("//bookstore"); //выбираем корневой узел

            if (index == 0)
            {
                menu.RemoveChild(menu.FirstChild);
            }
            else
            {
                menu.RemoveChild(menu.ChildNodes.Item(index));
            }
            XMLToHTML.SaveXMLDocument(); //сохраняем документ
        }
Beispiel #7
0
        private void LoadRecordsToDataGridView() //загрузка записей в DataGridView
        {
            try
            {
                Collection <Record> AllRecords = new Collection <Record>();
                AllRecords = XMLToHTML.OpenXMLDocument(); //открываем документ и считываем из него записи
                foreach (Record r in AllRecords)
                {
                    string[] s = { r.Title, r.Author, r.Category, r.Price }; //запоминаем данные в массиве строк
                    dataGridView1.Rows.Add(s);                               //выводим данные в DataGridView
                    dataGridView1.Refresh();
                }
            }
            catch (Exception ex)
            {
                string[] s = { "что-то пошло не так при записи...", ex.Message, "", "" };

                dataGridView1.Rows.Add(s);
                dataGridView1.Refresh();
            }
        }