DataGridView + DataSet + XML + Zapis

0

Otoz takie pytanie:
Chce z DataGridView odeslac dane z powrotem do DataSet i Zapisac je do pliku XML. Jakim poleceniem sie to robi ? Bo juz naprawde tyle sie namęczyłem i naprawdę nic nie znalazlem może ktos mi pomoże? :)

Z Gory dzieki. Pozdro.
Serg

0

hhhmmm.. z tego co pamietam, to dane w DS sa na biezaco poprawiane i odswiezane po kazdej edycji/dodaniu/usunieciu wiersza poprzez DGV. byc moze trzeba cos dokonfigurowac, ale wydaje mi sie ze to bylo wrecz defaultowe zachowanie, no a z ds do xml to wiesz na pewno

0
XmlSerializer ser = new XmlSerializer(typeof(DataSet));
DataSet ds = new DataSet();
ds = (DataSet)(dataGridView1.DataSource);
TextWriter write = new StreamWriter(path);
ser.Serialize(write, ds);
write.Close();

Ja próbuje coś takiego
niestety ds jest pusty nie lapie zawartości dataGridView1

0

OK
sam doszedlem dlaczego się tak dzieje
pod dataGridView1.DataSource mam (none)
nie trzymam żadnej bazy danych
mam tylko datagridview i z tego chce przejsc na nowy
DataSet (tylko na potrzeby zapisu do pliku)
(oczywiscie mogę na piechotę zrobić klase magazyn i trzymać tam wszystkie dane ale nie potrzebuje ich / konieczność odświerzania bazy i kontrolek tylko by komplikowała sprawe )- to tylko playlista do zapisania w xmlu

0

Witam wykorzystałem kod z postu powyżej, w zamian dostaję tylko komunikat o błędzie typów?

           XmlSerializer ser = new XmlSerializer(typeof(DataSet));
            DataSet ds = new DataSet();
            ds = (DataSet)(dgv.DataSource);
            TextWriter write = new StreamWriter("text.xml");
            ser.Serialize(write, ds);
            write.Close();

Unable to cast object of type 'System.Windows.Forms.BindingSource' to type 'System.Data.DataSet'.

0

jesli dostajesz taka informacje, to poszukac wypada gdzie w kodzie wykonujesz jakiekolwiek rzutownie na typ "DataSet"
odkryjesz nagle, ze w tym fragmencie kodu masz tylko jedno (ale fart!) takie miejsce i brzmi ono:
ds = (DataSet)(dgv.DataSource);
no i co tutaj moze byc nie tak..?
blad mowi:
Unable to cast object of type 'System.Windows.Forms.BindingSource' to type 'System.Data.DataSet'
czyli ze nie wyszlo rzutowanie na-dataset z-bindingsource..
dr. watson podpowiada w tym momencie, ze pewnie owo "dgv.DataSource" jest "BindingSource'm", bo przeciez wlanie ono jest rzutowane w tym kodzie..
ale skad tam BindingSource?

...
ano, i tutaj pytanie do Ciebie:
wiesz w ogole co robisz, czy kopiujesz kod na slepo i strzelasz?

skoro jest tam :DataSource tego DGV jest BindingSource'm, to znaczy ze TY JE TAM UMIESCIELES. Np. mogles w designerze wyklikac BS'a, i podpiac DataSource tego DGV na tego BS'a. A moze zrobiles to w kodzie. A i mogles jeszcze to zrobic na wiele innych sposobow, ale to TY ustawiles temu DGV jego DataSource na owo BS.
.. a tutaj chcesz je rzutowac na DataSet. halo! pobudka.

strzelam:
ds = (DataSet)(dgv.DataSource); => ds = (DataSet) ((BindingSource)(dgv.DataSource).DataSource);

ale tak naprawde, obudz sie i zacznij kontrolowac co robisz, a nie tylko wklejaj sample

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