[C#] jak zapisać zawartość DGV do pliku?


(misza_88) #1

Witam!

Zacząłem pisać program do zapisywania kiedy były robione naprawy/wymiany w samochodzie. Pisząc napotkałem się na problem z zapisem zawartości DGV do pliku. Wiem, że można zrobić kolumny poprzez DataColumn i podpiąć je do DataSource DGV ale nie w tym rzecz, problem polega na tym, że chcę aby jedna z kolumn formatowała zawartość komórek do formatu walutowego. Przez dodawanie kolumn w DGV mam taką możliwość, w DataTable czy też DataColumn już takiej możliwości nie ma.

Więc moje pytanie brzmi, jak zapisać zawartość DGV do pliku tak aby jedna z kolumn formatowała zawartość.

Program piszę w VisualStudio2010.


(Fiołek) #2

Bindując dane do DGV przez DataSource nadal masz możliwość ustawiania kolumn ręcznie i bindowania ich do danych(w designerze wybierasz właściwość Columns i ten przycisk z "..." :wink: ). Nie musisz być skazanym na ich domyślne formatowanie a dzięki temu masz serializacje prawie za darmo.


(misza_88) #3

Nie wszystko jest tak jakbym chciał. Niby mam możliwość ustawienia formatowania kolumn ale po dodaniu wiersza nie formatuje mi komórki, tzn. wyrównanie zawartości komórki, np. do prawego górnego rogu, działa, ale format w jakim ma być zapisana ta zawartość już nie.


(Fiołek) #4

Musisz coś źle ustawiać. Jeśli poprawnie ustawisz formatowanie dla kolumny jest ono aplikowane do KAŻDEJ komórki w kolumnie(chyba, że danych danych nie da się sformatować, ale to inna bajka).

Przykład:

class Sample

{

    public string A { get; set; }

    public string B { get; set; }

    public decimal C { get; set; }

}

Zbindowałem to do DGV za pomocą designera(utworzyłem *.datasource z klasy i przypisałem je do BindingSource które to zbindowałem do DGV - kilka klików w designerze) i wstawiłem do kolekcji przykładowe dane. W DGV w już działającej aplikacji dodałem dwa wiersze - kolumny którym ustawiłem formatowanie© zostały sformatowane tak jak powinny:

przyklad-forum.dp_.pl_.png


(misza_88) #5

wcześniej robiłem wszystko dobrze, czyli tworzyłem lokalną bazę danych, dodawałem tabele danych i podpinałem to do DGV ale robiłem czeski błąd (aż wstyd się przyznać :wink:) kolumna, gdzie miała być kwota, przechowywała dane typu string, wystarczyło zmienić na decimal i wszystko gra :slight_smile:

dzięki Fiołek za naprowadzenie, z tym bindowaniem i za pomoc