C# xml + datagidview

0

Mam taki problem mam utworzony plik xml do którego wczytuję dane z text box.Dane wczytują się poprawnie . Dane z pliku xml są wyświetlone do datagridaview :

DataSet ds = new DataSet();
ds.ReadXml(@"Osoby.xml");
dataGridView1.DataSource = ds.Tables[1];

Wyświetlanie to działa problem polega na tym że zaznaczam jakąś kolumnę w datagridview i chce ją usunąć usuwam ją tak :

List<int> indeksyZaznaczonychWierszy = new List<int>();
  int Licznik = 0;
            while (Licznik < dataGridView1.SelectedRows.Count)
            {
                indeksyZaznaczonychWierszy.Add(
                dataGridView1.Rows.IndexOf(dataGridView1.SelectedRows[Licznik])
                 );
                Licznik++;
            }
            indeksyZaznaczonychWierszy.Sort();
            Licznik = indeksyZaznaczonychWierszy.Count - 1;
            while (Licznik > -1)
            {
                dataGridView1.Rows.RemoveAt(indeksyZaznaczonychWierszy[Licznik]);
                Licznik--;
               
            }

dana kolumna w datagrid się usuwa . Jednak nie usuwa się w pliku xml i tu mam pytanie jak to zrobić aby automatycznie po usunięciu w datagridview usuwało sie również w pliku xml ?

0

Jak ma się usunąć z XML'a skoro tego nie robisz. Musisz jakoś powiązać dany wiersz w gridzie z nodem w XML'u. Na przykład po jakimś identyfikatorze. Albo po usunięciu spróbuj serializować datasource ponownie do pliku.

0

Chodzi o to że jak wczytasz xml do DataSet'a to już nie operujesz jakby bezpośrednio na pliku tylko robisz to na tabeli danych stworzonej z wczytanych elementów. Operowanie na danych w data grid w żaden sposób nie odnosi się już do xml'a

0

No właśnie i za bardzo nie wiem jak z powrotem powiązać datagrida z xml w sensie ze zaznaczam w datagridzie np jakis wiersz z danymi osoby i xml wie ze chodzi o daną osobe w pliku xml nie mam w datagridzie id tez nie wiem jak to zrobic dodanie danych z text box do xml robie tak :


List<klientprywatny> klienci = new List<klientprywatny>();
            klienci.Add(new klientprywatny() { Imie = txtImie.Text, Nazwisko = txtNazwisko.Text, miasto = txtMiasto.Text, ulica=txtUlica.Text,
                                                kodpocztowy=txtKodPocztowy.Text, telefon=txtTelefon.Text, email=txtEmail.Text, numer=txtNumer.Text});

            XDocument xml = new XDocument(
                new XDeclaration("1.0", "utf-8", "yes"),
                new XComment("Lista osób z kolekcji"),
                new XElement("Klienci",
                   new XElement("prywatni",
                    from klient in klienci
                    orderby klient.Nazwisko, klient.Imie
                    select new XElement("osoba",
                        new XElement("imie", klient.Imie),
                        new XElement("nazwisko", klient.Nazwisko),
                        new XElement("miasto", klient.miasto),
                        new XElement("ulica", klient.ulica),
                        new XElement("kodpocztowy", klient.kodpocztowy),
                        new XElement("telefon", klient.telefon),
                        new XElement("email", klient.email),
                        new XElement("numer", klient.numer)





                        )
                    )
                    )
 

natomiast add robie tak :

 List<klientprywatny> klienci = new List<klientprywatny>();
              klienci.Add(new klientprywatny() { Imie = txtImie.Text, Nazwisko = txtNazwisko.Text, miasto = txtMiasto.Text, ulica=txtUlica.Text,
                                                kodpocztowy=txtKodPocztowy.Text, telefon=txtTelefon.Text, email=txtEmail.Text, numer=txtNumer.Text});

            
                        XDocument doc = XDocument.Load("Osoby.xml");
            var osoba =
              from klient in klienci
              orderby klient.Nazwisko, klient.Imie
              select new XElement("osoba",
                   new XElement("imie", klient.Imie),
                        new XElement("nazwisko", klient.Nazwisko),
                        new XElement("miasto", klient.miasto),
                        new XElement("ulica", klient.ulica),
                        new XElement("kodpocztowy", klient.kodpocztowy),
                        new XElement("telefon", klient.telefon),
                        new XElement("email", klient.email),
                        new XElement("numer", klient.numer)
                );                                                             
                        
                        doc.Root.Element("prywatni").Add(osoba);
                        doc.Save("Osoby.xml");
            
        }
0

Dodaj pole ID do osoby czy tam klienta

0

ok pole id dodane a jak teraz zrobić zeby sie zmieniało tak jak ja zmieniam w datagridzie ?

0

Nie rozumiem za bardzo serializacji datasource co to ma wspólnego z moim xml ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1