Как обновить данные, отображаемые в представлении набора данных XML? - PullRequest
0 голосов
/ 22 января 2019

Итак, я в значительной степени сейчас пытаюсь обновить связанный XML-файл источника данных, чтобы при нажатии кнопки количество элемента уменьшалось ... однако ... значение ячейки количества ... никогда не уменьшалось... вот что у меня есть.

    using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
using System.Windows;
using System.Xml.Linq;

namespace Portal_of_Asura
{
    public partial class ShopForm : Form
    {
        public string ShopName;
        public string ShopKeeperName;
        public string ShopSpecies;
        public List<XmlNode> Items = new List<XmlNode>() { };
        public ShopForm(String ShopName)
        {
            InitializeComponent();

        }
        public DataSet ds = new DataSet();

        private void ShopForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            ds.WriteXml("./ReferenceXMLS/ShopList.xml");


        }

        private void ShopForm_Load_1(object sender, EventArgs e)
        {



            //XElement xelement = XElement.Load("./ReferenceXMLS/ShopList.xml");
            //
            //IEnumerable<XElement> books = xelement.Elements();
            //List<XElement> books2 = new List<XElement> { };
            //foreach(var element in books)
            //{
            //    books2.Add(element);
            //
            //}
            //foreach (var element2 in books2)
            //{
            //    if(element2.Attribute("name").Value == "Tiarga")
            //    {
            //        
            //    }
            //}

            var xml = XDocument.Load(@"./ReferenceXMLS/ShopList.xml");
            var ds = xml.Root.Descendants("Shop")
                    .Single(x => x.Attribute("name").Value == "Tiarga")
                    .Descendants("Item")
                    .Select(x => new {
                        Name = x.Attribute("name").Value,
                        Price = x.Descendants("Price").FirstOrDefault()?.Value,
                        Stats = x.Descendants("Stats").FirstOrDefault()?.Value,
                        Quantity = x.Descendants("Quantity").FirstOrDefault()?.Value,
                    })
                    .ToList();
            dataGridView1.DataSource = ds;


            //Console.WriteLine(ds.Tables["Item"].ToString());


            //dataGridView1.DataSource = ds.Tables["Item"];
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var targetRow = dataGridView1.CurrentCell.RowIndex;
            var cellValue = dataGridView1.Rows[targetRow].Cells[3].Value.ToString();
            Console.WriteLine(dataGridView1.Rows[targetRow].Cells[3].Value);
            dataGridView1.Rows[targetRow].Cells[3].Value = int.Parse(cellValue) - 1;
            ds.AcceptChanges();
        }

    }
}

но на button1_click () я хочу, чтобы оно изменило значение в xml и отобразило изменение ... раньше, когда я буду анализировать каждый xmlNode вТаблица (много кода) Я мог бы сделать это ... но теперь, когда он связан ... У меня трудности с его изменением ... помогите?

...