Stan wiersza
Wiersze w obiekcie DataTable zmieniają swoje podczas całego życia obiektu. Sprawdzając właściwość RowState możemy dowiedzieć w jakim stanie jest obecnie wiersz. Wartości tego typu wyliczeniowego:
- Detached - wiersz został stworzony, ale nie dodany do tabeli
- Added - wiersz został stworzony i dodany do tabeli
- Unchanged - stan wiersza nie zmienił się od ostatniego wywołania metody AcceptChanges; w momencie wywołania metody AcceptChanges wiersz przyjmuje ten stan
- Modified - wiersz zmienia się w ten stan tylko jeżeli poprzednio miał stan Unchanged; po wywołaniu AcceptChanges wiersz zmienia swój stan na Unchanged
- Deleted - wiersz przyjmuje ten stan gdy zostanie usunięty z tabeli
Code:
Zarządzanie danymi w wierszu za pomocą wersji wiersza
DataTable może posiadać do trzech wersji danego wiersza: oryginalny (Original), obecny (Current) oraz zaplanowany (Proposed). Możliwe wartości przechowywane są w enumie DataRowVersion:
- Current - obecna wartość; istnieje zawsze oprócz sytuacji w której usuniemy wiersz (próba pobrania zakończy się wyjątkiem)
- Default - jeżeli DataRowState jest ustawiony na Added lub Modified - domyślna wartość to Current; jeżeli Deleted - rzucony zostanie wyjątek; jeżeli zostanie wywołana metoda BeginEdit - Proposed
- Original - wartość załadowana do wiersza, lub ta od ostatniego wywołania metody AcceptChanges. Wartość ta nie jest ustawiana dopóki wiersz nie znajdzie się w stanie Modified, Unchanged, lub Deleted. Jeżeli wiersz jest w stanie Added, zostanie rzucony wyjątek VersionNotFound
- Proposed - wartość w trakcie edycji wiersza. Jeżeli wiersz jest w stanie Deleted, zostanie rzucony wyjątek. Jeżeli metoda BeginEdit nie została wywołana, bądź też została wywołana na wierszu, który nie należy do DataTable, zostanie rzucony wyjątek VersionNotFound
Code:
Metody AcceptChanges oraz RejectChanges
Metody te, jak same ich nazwy mówią służą do akceptacji lub odrzucenia danych. Metody te są potrzebne, aby zmienić stan wiersza na Unchanged.
Po dokonaniu zmian wierszy, które zostały pobrane z źródła danych (np. bazy danych) należy wybrać tylko te wiersze, których stan to Modified. Wiesze które zostały zmodyfikowane możemy pobrać za pomocą metody GetChanges. Po zapisaniu zmian do źródła danych należy wywołać metodę AcceptChanges w celu zresetowania stanu wierszy przechowywanych w obiekcie DataTable.
Wywołanie AcceptChanges dodatkowo powoduje skopiowanie danych z wersji Current do wersji Original.
Wywołanie RejectChanges powoduje skopiowanie danych z wersji Original do Current.
Stan wiersza możemy także zmienić za pomocą dwóch dodatkowych metod:
- SetAdded - dodany
- SetModified - zmodyfikowany
Metody te mają ograniczenie do wywoływania ich na wierszach, które są w stanie Unchanged. Jeżeli wiersz jest w innym stanie, zostanie rzucony wyjątek InvalidOperationExcetpion.
Dodatkowo metody te:
- SetAdded - usuwa oryginalną wersjędanych
- SetModified - nie modyfikuje wersji wiersza
Usuwanie wierszy i cofanie tej operacji
Wywołując metodę Delete na wierszu oznaczamy go do usunięcia. Następstwem jest usunięcie wersji danych Current oraz Proposed.
Jeżeli okaże się, że dany wiersz ma nie być usunięty, można użyć metody RejectChanges. Dane Original zostaną skopiowane do Current. Wiesz wraca do stanu sprzed ostatniego wywołania metody AcceptChanges, jednak wszystkie operacje wykonane po tej metodzie nie zostaną przywrócone.
Iteracja po danych zawartych w DataTable
Po obiekcie DataTable można iterować za pomocą pętli:
Code:
Kopiowanie obiektów DataTable
Obiekty DataTable można kopiować za pomocą dwóch metod:
- Copy - tworzy kopię zawierającą schemat i dane
- Clone - kopiuje tylko schemę
Przykładowy kod do pobrania: http://sdrv.ms/X0ZixZ
Brak komentarzy:
Prześlij komentarz