Udostępnij przez


Przegląd kontroli DataGrid (Windows Forms)

Uwaga / Notatka

Kontrolka DataGridView zastępuje i dodaje funkcje do kontrolki DataGrid; jednak kontrolka DataGrid jest zachowywana w celu zachowania zgodności z poprzednimi wersjami i użycia w przyszłości, jeśli wybierzesz. Aby uzyskać więcej informacji, zobacz Różnice między kontrolkami formularzy systemu Windows DataGridView i DataGrid.

Kontrolka Windows Forms DataGrid wyświetla dane w serii wierszy i kolumn. Najprostszym przypadkiem jest to, że siatka jest powiązana ze źródłem danych z jedną tabelą, która nie zawiera żadnych relacji. W takim przypadku dane są wyświetlane w prostych wierszach i kolumnach, tak jak w arkuszu kalkulacyjnym. Aby uzyskać więcej informacji na temat wiązania danych z innymi kontrolkami, zobacz Powiązanie danych i Formularze systemu Windows.

Jeśli obiekt DataGrid jest powiązany z danymi z wieloma powiązanymi tabelami, a nawigacja jest włączona w siatce, siatka wyświetli rozszerzenia w każdym wierszu. Za pomocą ekspandera użytkownik może przejść z tabeli nadrzędnej do tabeli podrzędnej. Kliknięcie węzła powoduje wyświetlenie tabeli podrzędnej i kliknięcie przycisku Wstecz powoduje wyświetlenie oryginalnej tabeli nadrzędnej. W ten sposób siatka wyświetla hierarchiczne relacje między tabelami.

Poniższy zrzut ekranu przedstawia kontrolkę DataGrid powiązaną z danymi zawierającymi wiele tabel:

Aplikacja WinForms przedstawiająca usługę DataGrid powiązaną z danymi z wieloma tabelami.

DataGrid może zapewnić interfejs użytkownika dla zestawu danych, nawigację między powiązanymi tabelami oraz zaawansowane możliwości formatowania i edytowania.

Wyświetlanie i manipulowanie danymi są oddzielnymi funkcjami: kontrolka obsługuje interfejs użytkownika, natomiast aktualizacje danych są obsługiwane przez architekturę powiązania danych formularzy systemu Windows i dostawców danych programu .NET Framework. W związku z tym wiele kontrolek powiązanych z tym samym źródłem danych pozostanie zsynchronizowanych.

Uwaga / Notatka

Jeśli znasz kontrolkę DataGrid w języku Visual Basic 6.0, zauważysz istotne różnice w kontrolce Windows Forms DataGrid.

Gdy siatka jest powiązana z DataSet, kolumny i wiersze są automatycznie tworzone, sformatowane i wypełnione. Aby uzyskać więcej informacji, zobacz Powiązanie danych i Formularze Windows. Po wygenerowaniu kontrolki DataGrid można dodawać, usuwać, rozmieszczać i formatować kolumny i wiersze w zależności od potrzeb.

Wiązanie danych z kontrolką

Aby kontrolka DataGrid działała, powinna być powiązana ze źródłem danych przy użyciu właściwości DataSource i DataMember w czasie projektowania lub metody SetDataBinding w czasie wykonywania. To powiązanie wskazuje DataGrid na utworzony obiekt źródła danych, taki jak DataSet lub DataTable. Kontrolka DataGrid pokazuje wyniki akcji wykonywanych na danych. Większość akcji specyficznych dla danych nie jest wykonywana za pośrednictwem DataGrid elementu , ale zamiast tego za pośrednictwem źródła danych.

Jeśli dane w powiązanym zestawie danych zostaną zaktualizowane za pomocą dowolnego mechanizmu, kontrolka DataGrid odzwierciedla zmiany. Jeśli siatka danych oraz jej style tabeli i style kolumn mają właściwość ustawioną ReadOnly na false, dane w zestawie danych można zaktualizować za pomocą kontrolki DataGrid .

Tylko jedną tabelę można wyświetlić w DataGrid w danym momencie. Jeśli relacja nadrzędny-podrzędna jest zdefiniowana między tabelami, użytkownik może przejść między powiązanymi tabelami, aby wybrać tabelę, która ma być wyświetlana w kontrolce DataGrid . Aby uzyskać informacje o powiązaniu kontrolki DataGrid ze źródłem danych ADO.NET w czasie projektowania lub wykonywania, zobacz Jak powiązać kontrolkę DataGrid formularzy systemu Windows ze źródłem danych.

Prawidłowe źródła danych dla elementu DataGrid to:

Jeśli źródłem jest zestaw danych, zestaw danych może być obiektem w formularzu lub obiektem przekazanym do formularza przez usługę sieci Web XML. Można powiązać z typowanymi lub nietypowanymi zestawami danych.

Kontrolkę DataGrid można również powiązać z dodatkowymi strukturami, jeśli obiekty w strukturze, takie jak elementy w tablicy, uwidaczniają właściwości publiczne. Tabela wyświetli wszystkie jawne właściwości elementów w strukturze. Jeśli na przykład powiążesz kontrolkę DataGrid z tablicą obiektów klienta, siatka wyświetli wszystkie publiczne właściwości tych obiektów klienta. W niektórych przypadkach oznacza to, że chociaż można powiązać się ze strukturą, wynikowa struktura powiązana może nie mieć praktycznego zastosowania. Na przykład można powiązać z tablicą liczb całkowitych, ale ponieważ Integer typ danych nie obsługuje właściwości publicznej, siatka nie może wyświetlić żadnych danych.

Można powiązać z następującymi strukturami, jeśli ich elementy uwidaczniają właściwości publiczne.

  • Każdy składnik, który implementuje IList interfejs. Obejmuje to tablice jednowymiarowe.

  • Każdy składnik, który implementuje IListSource interfejs.

  • Każdy składnik, który implementuje IBindingList interfejs.

Aby uzyskać więcej informacji na temat możliwych źródeł danych, zobacz Źródła danych obsługiwane przez formularze systemu Windows.

Wyświetlanie siatki

Typowym zastosowaniem kontrolki DataGrid jest wyświetlenie pojedynczej tabeli danych z zestawu danych. Można jednak użyć kontrolki do wyświetlania wielu tabel, w tym powiązanych tabel. Wyświetlanie siatki jest automatycznie dostosowywane zgodnie ze źródłem danych. W poniższej tabeli przedstawiono, co jest wyświetlane dla różnych konfiguracji.

Zawartość zestawu danych Co jest wyświetlane
Pojedyncza tabela. Tabela jest wyświetlana w układzie siatki.
Wiele tabel. Siatka może wyświetlić widok drzewa, po którym użytkownicy mogą nawigować, aby znaleźć tabelę, którą chcą wyświetlić.
Wiele powiązanych tabel. Siatka może wyświetlić widok drzewa, za pomocą którego można wybrać tabele, lub określić, że siatka wyświetla tabelę nadrzędną. Rekordy w tabeli nadrzędnej umożliwiają użytkownikom nawigację do powiązanych wierszy podrzędnych.

Uwaga / Notatka

Tabele w zestawie danych są powiązane przy użyciu elementu DataRelation. Zobacz również Tworzenie relacji między zestawami danych.

Gdy kontrolka DataGrid wyświetla tabelę i właściwość AllowSorting jest ustawiona na true, dane można ponownie sortować, klikając nagłówki kolumn. Użytkownik może również dodawać wiersze i edytować komórki.

Relacje między zestawem tabel są wyświetlane użytkownikom przy użyciu struktury nadrzędnej/podrzędnej nawigacji. Tabele nadrzędne stanowią najwyższy poziom danych, a tabele podrzędne to tabele danych, które są tworzone na podstawie indywidualnych pozycji w tabelach nadrzędnych. Elementy rozwijalne są wyświetlane w każdym głównym wierszu zawierającym tabelę podrzędną. Kliknięcie ekspandera powoduje wygenerowanie listy linków przypominających sieć Web do tabel podrzędnych. Gdy użytkownik wybierze link, zostanie wyświetlona tabela podrzędna. Kliknięcie ikony pokaż/ukryj wiersze nadrzędne (Ikona pokaż/ukryj wiersze nadrzędne) spowoduje ukrycie informacji o tabeli nadrzędnej lub ponowne wyświetlenie, jeśli użytkownik wcześniej je ukrył. Użytkownik może kliknąć przycisk Wstecz, aby wrócić do wcześniej wyświetlanej tabeli.

Kolumny i wiersze

Obiekt DataGrid składa się z kolekcji DataGridTableStyle obiektów zawartych we DataGrid właściwości kontrolki TableStyles . Styl tabeli może zawierać kolekcję DataGridColumnStyle obiektów, które są zawarte w właściwości GridColumnStylesDataGridTableStyle. Możesz edytować właściwości TableStyles i GridColumnStyles za pomocą edytorów kolekcji dostępnych w oknie Właściwości.

Dostęp do dowolnego DataGridTableStyle skojarzonego z kontrolką DataGrid można uzyskać za pośrednictwem elementu GridTableStylesCollection. Element GridTableStylesCollection można edytować w projektancie za pomocą edytora kolekcji DataGridTableStyle, lub programowo poprzez właściwość DataGrid kontrolki TableStyles.

Poniższa ilustracja przedstawia obiekty zawarte w kontrolce DataGrid:

Diagram przedstawiający obiekty zawarte w kontrolce DataGrid.

Style tabeli i kolumn są synchronizowane z obiektami DataTable i DataColumn poprzez ustawienie odpowiednich właściwości MappingName na TableName i ColumnName. Jeśli do kontrolki DataGridTableStyle powiązanej z prawidłowym źródłem danych DataGrid zostanie dodany DataGridTableStyle który nie ma stylów kolumny, a TableName właściwość tego stylu tabeli jest ustawiona na prawidłową DataGridColumnStyle właściwość, zostanie utworzona kolekcja obiektów dla tego stylu tabeli. Dla każdego DataColumn znalezionego w kolekcji Columns obiektu DataTable, odpowiedni element DataGridColumnStyle jest dodawany do GridColumnStylesCollection. GridColumnStylesCollection uzyskuje się dostęp poprzez właściwość GridColumnStyles obiektu DataGridTableStyle. Kolumny można dodawać lub usuwać z tabeli, używając metody Add lub Remove na obiekcie GridColumnStylesCollection. Aby uzyskać więcej informacji, zobacz Instrukcje: dodawanie tabel i kolumn do kontrolki DataGrid formularzy systemu Windows oraz Instrukcje: usuwanie lub ukrywanie kolumn w kontrolce DataGrid formularzy systemu Windows.

Kolekcja typów kolumn rozszerza klasę DataGridColumnStyle o zaawansowane możliwości formatowania i edytowania. Wszystkie typy kolumn dziedziczą z klasy bazowej DataGridColumnStyle . Klasa, która jest tworzona, zależy od właściwości DataType obiektu DataColumn, na którym opiera się DataGridColumn. Na przykład DataColumn, której właściwość DataType jest ustawiona na Boolean, będzie powiązana z DataGridBoolColumn. W poniższej tabeli opisano każdy z tych typów kolumn.

Typ kolumny Opis
DataGridTextBoxColumn Akceptuje i wyświetla dane jako sformatowane lub niesformatowane ciągi. Możliwości edytowania są takie same jak w przypadku edytowania danych w prostym TextBox. Dziedziczy z obiektu DataGridColumnStyle.
DataGridBoolColumn Akceptuje i wyświetla wartości true, false i null. Dziedziczy z obiektu DataGridColumnStyle.

Dwukrotne kliknięcie prawej krawędzi kolumny zmienia rozmiar kolumny, aby wyświetlić jego pełny podpis i najszerszy wpis.

Style tabeli i style kolumn

Po ustanowieniu DataGrid domyślnego formatu kontrolki można dostosować kolory, które będą używane, gdy niektóre tabele będą wyświetlane w siatce danych.

Jest to osiągane przez utworzenie wystąpień DataGridTableStyle klasy. Style tabeli określają formatowanie określonych tabel, różnią się od domyślnego formatowania samej kontrolki DataGrid . Każda tabela może mieć zdefiniowany tylko jeden styl tabeli.

Czasami warto mieć określoną kolumnę inną niż pozostałe kolumny określonej tabeli danych. Możesz utworzyć dostosowany zestaw stylów kolumn przy użyciu GridColumnStyles właściwości .

Style kolumn są powiązane z kolumnami w zestawie danych, podobnie jak style tabeli, są powiązane z tabelami danych. Podobnie jak każda tabela może mieć zdefiniowany tylko jeden styl tabeli w danym momencie, więc każda kolumna może mieć zdefiniowany tylko jeden styl kolumny, w określonym stylu tabeli. Ta relacja jest definiowana we właściwości kolumny MappingName .

Jeśli utworzono styl tabeli bez dodanych stylów kolumn, program Visual Studio podczas wykonywania doda domyślne style kolumn, gdy formularz i tabela zostaną utworzone. Jeśli jednak utworzono styl tabeli i dodano do niego wszystkie style kolumn, program Visual Studio nie utworzy żadnych stylów kolumn. Aby kolumny, które chcesz, były wyświetlane w siatce, musisz także zdefiniować style kolumn i przypisać im odpowiednie nazwy mapowania.

Ponieważ określasz, które kolumny znajdują się w siatce danych, przypisując im styl kolumny i nie przypisano żadnego stylu kolumny do kolumn, możesz uwzględnić kolumny danych w zestawie danych, które nie są wyświetlane w siatce. Jednak ponieważ kolumna danych jest zawarta w zestawie danych, można programowo edytować dane, które nie są wyświetlane.

Uwaga / Notatka

Ogólnie rzecz biorąc, utwórz style kolumn i dodaj je do kolekcji stylów kolumn przed dodaniem stylów tabeli do kolekcji stylów tabeli. Po dodaniu pustego stylu tabeli do kolekcji style kolumn są generowane automatycznie. W związku z tym, jeśli spróbujesz dodać nowe style kolumn z powtarzającymi się wartościami MappingName do kolekcji stylów kolumn, zostanie zgłoszony wyjątek.

Czasami warto po prostu dostosować jedną kolumnę między wieloma kolumnami; na przykład zestaw danych zawiera 50 kolumn i potrzebujesz tylko 49 z nich. W tym przypadku łatwiej jest zaimportować wszystkie 50 kolumn i programowo usunąć jedną, zamiast programowo dodawać każdą z 49 poszczególnych kolumn.

Formatowanie

Formatowanie, które można zastosować do kontrolki DataGrid , obejmuje style obramowania, style linii siatki, czcionki, właściwości podpisów, wyrównanie danych i naprzemienne kolory tła między wierszami. Aby uzyskać więcej informacji, zobacz How to: Format the Windows Forms DataGrid Control (Instrukcje: formatowanie kontrolki DataGrid formularzy systemu Windows).

Zdarzenia

Oprócz typowych zdarzeń sterowania, takich jak MouseDown, Enteri Scroll, kontrolka DataGrid obsługuje zdarzenia skojarzone z edytowaniem i nawigacją w siatce. Właściwość CurrentCell określa, która komórka jest zaznaczona. Zdarzenie CurrentCellChanged jest zgłaszane, gdy użytkownik przejdzie do nowej komórki. Gdy użytkownik przejdzie do nowej tabeli poprzez relacje rodzic/dziecko, Navigate zdarzenie jest wywoływane. Zdarzenie BackButtonClick jest zgłaszane, gdy użytkownik kliknie przycisk Wstecz, gdy użytkownik wyświetla tabelę podrzędną, a ShowParentDetailsButtonClick zdarzenie jest zgłaszane po kliknięciu ikony pokaż/ukryj wiersze nadrzędne.

Zobacz także