[C#] Zawartość kolumn znika po kliknięciu na nazwę kolumny w dataGridView

Witam, to znowu ja. Tym razem mam problem, usuwającymi się danymi z dataGridView. Problem jest taki, że mam stworzony w projektancie dataGridView. Otwieram plik XML, który stworzyłem w swoim programie by do niego dopisać kolejne produkty. Do stworzonych kolumn dorzuca te z pliku i ja je programowo przenoszę w odpowiednie miejsce (kolumny się dublują), a następnie je usuwam. Jednak po kliknięciu na nazwę kolumny usuwa mi wszystkie dane, które są wprowadzone do kolumn zrobionych przez projektanta (te dodane z pliku zostają bez szwanku). Plik otwieram tak:

String fileName = otworzPlik.FileName.ToString();



                DataSet ds = new DataSet();



                ds.ReadXml(fileName);



                dataGridView1.DataSource = ds.Tables["product"];

Może jest sposób, by usunąć datasource bez czyszczenia dataGridView, albo rozwiązać to w inny sposób? Przy wprowadzaniu nowych danych wykorzystuję taki sam dataGridView jak ten przy wczytywaniu pliku (też kolumny stworzone przez projektanta), ręcznie dodaję kolumny z atrybutami danego produktu i generuję plik i to to działa.

Witam,

 

A nie lepiej pisać co w WPF i MVVM?

 

Pozdrawiam,

 

mr-owl

Lepiej i mam w planach przepisać, ale to dopiero za jakiś czas…

Wiesz może, co może powodować problem?

Witam,

 

Możesz przechowywać dane w jakiejś własnej kolekcji a nie w DataSet? Tworzysz klasę która przechowuje dane pojedynczego rekordu, robisz do niego serializację do XML-a. Wszystkie operacje przeprowadzasz na swojej kolekcji nad którą masz pełną kontrolę, możesz ją także wrzucić do DataGridView i programować wszystkie zdarzenia które Cię interesują. Może być konieczne dopisanie trochę kodu pomocniczego (http://www.dotnetperls.com/convert-list-datatable) ale będzie to dobra szkoła przed przesiadką na WPF.

 

Pozdrawiam,

 

mr-owl

Super, dzięki za rozwiązanie, chętnie zerknę.

Co do dataset, to go nie mam jak wpisuje nowego producenta - dataGridView bez DataSet. DataSet mam tylko przy wczytywaniu z pliku i potem najchętniej bym się go pozbył (z zachowaniem danych na dataGridView) do ponownego wygenerowania pliku