środa, 16 stycznia 2013

70-516 DataView

DataView umożliwia sortowanie i filtrowanie danych zawartych w obiekcie DataTable. Jeden obiekt DataTable może posiadać wiele widoków (DataView), dzięki czemu nie ma potrzeby za każdym razem pobierać danych z źródła danych jakim np. jest baza danych.

Sortowanie
Sortowanie konfigurujemy w bardzo prosty sposób. Do zmiennej Sort przypisujemy kolumny po których chcemy przeprowadzić sortowanie i podajemy kierunek: rosnąco - ASC, malejąco - DSC. Jeżeli chcemy sortować po więcej niż jednej kolumnie, kolejne definicje sortowania wprowadzamy po przecinku:

Code:
dataView.Sort = "tytul ASC, rezyser DESC";


Filtrowanie wyników
Wyniki możemy filtrować zarówno pod względem zawartości, jak i stanu wiersza.
Właściwość, która pozwala filtrować wiersze pod względem zawartości danych jest RowFilter. Składnia właściwi jest taka sama jak w SQLu. Przykład:

Code:
dataView.RowFilter = "nosnik = 'dvd' and tytul like '%a%'";

Właściwość RowStateFilter pozwala przeszukiwać dane według stanu wiersza obiektu DataTable. Właściwość ta przyjmuje wartości zawarte w typie wyliczeniowym DataViewRowState.
Możliwe wartości:
  • Added 
  • CurrentRows
  • Deleted
  • ModifiedCurrent
  • ModifiedOriginal
  • None - czyści filtr
  • OriginalRows
  • Unchanged

Przykład:

Code:
dataView.RowStateFilter = DataViewRowState.Unchanged;


Iteracja po obiekcie DataView
Jest bardzo podobna do iteracji po obiekcie DataTable:

Code:
            foreach (DataRowView row in dataView)
            {
                for (int i = 0; i < dataView.Table.Columns.Count; i++)
                {
                    Console.Write(row[i] + "  ");
                }
                Console.WriteLine();
            }



Eksport DataView do DataTable
Operacja ta może się przydać, gdy chcemy stworzyć nowy obiekt DataTable np. na podstawie zawężonych danych (użytkownik ustawi filtrowanie, sortowanie itd.). Dodatkowo możemy zdefiniować kolumny które będą zawarte w nowej tabeli. Przeprowadzamy ją za pomocą metody ToTable().
Przykład:

Code:
var newTable = dataView.ToTable("NewTable", false, "nosnik", "tytul");

Brak komentarzy:

Prześlij komentarz