Sdílet prostřednictvím


Přehled ovládacího prvku DataGrid (Windows Forms)

Poznámka:

Ovládací prvek DataGridView nahrazuje a přidává funkce do ovládacího prvku DataGrid; ovládací prvek DataGrid je však zachován pro zpětnou kompatibilitu i budoucí použití, pokud zvolíte. Další informace naleznete v tématu Rozdíly mezi ovládacím prvkem Windows Forms DataGridView a ovládacím prvkem DataGrid.

Ovládací prvek Windows Forms DataGrid zobrazuje data v řadě řádků a sloupců. Nejjednodušším případem je, když je mřížka svázaná se zdrojem dat s jedinou tabulkou, která neobsahuje žádné relace. V takovém případě se data zobrazují v jednoduchých řádcích a sloupcích, jako v tabulce. Další informace o vazbách dat s jinými ovládacími prvky naleznete v tématu Datové vazby a Windows Forms.

Pokud je DataGrid svázaný s daty s více souvisejícími tabulkami a pokud je v mřížce povolená navigace, mřížka zobrazí v každém řádku rozbalovací prvky. Pomocí expandéru může uživatel přejít z nadřazené tabulky na podřízenou tabulku. Kliknutím na uzel se zobrazí podřízená tabulka a kliknutím na tlačítko zpět se zobrazí původní nadřazená tabulka. Tímto způsobem mřížka zobrazuje hierarchické relace mezi tabulkami.

Následující snímek obrazovky ukazuje DataGrid svázaný s daty s více tabulkami:

aplikace WinForms zobrazující DataGrid vázanou na data s více tabulkami.

DataGrid může poskytnout uživatelské rozhraní pro datovou sadu, navigaci mezi souvisejícími tabulkami a bohaté možnosti formátování a úprav.

Zobrazení a manipulace s daty jsou samostatné funkce: Ovládací prvek zpracovává uživatelské rozhraní, zatímco aktualizace dat jsou zpracovávány architekturou datových vazeb Modelu Windows Forms a poskytovateli dat rozhraní .NET Framework. Proto zůstanou více ovládacích prvků vázaných na stejný zdroj dat synchronizováno.

Poznámka:

Pokud znáte ovládací prvek DataGrid v jazyce Visual Basic 6.0, najdete některé významné rozdíly v ovládacím prvku Windows Forms DataGrid.

Když je mřížka vázaná na DataSet, sloupce a řádky se automaticky vytvoří, naformátují a vyplní. Další informace naleznete v tématu Datové vazby a Windows Forms. Po generování ovládacího prvku DataGrid můžete v závislosti na vašich potřebách přidávat, odstraňovat, měnit uspořádání a formátovat sloupce a řádky.

Vytvoření vazby dat k ovládacímu prvku

Aby ovládací prvek DataGrid fungoval, měl by být vázán ke zdroji dat pomocí DataSource a DataMember vlastností v době návrhu nebo metody SetDataBinding za běhu. Tato vazba odkazuje DataGrid na objekt zdroje dat, který byl instancován, například DataSet nebo DataTable). Ovládací prvek DataGrid zobrazuje výsledky akcí prováděných s daty. Většina akcí specifických pro data se neprovádí prostřednictvím DataGrid , ale prostřednictvím zdroje dat.

Pokud se data v vázané datové sadě aktualizují prostřednictvím jakéhokoli mechanismu, DataGrid ovládací prvek odráží změny. Pokud má datová mřížka a její styly tabulek a styly sloupců ReadOnly vlastnost nastavenou na false, data v datové sadě je možné aktualizovat prostřednictvím ovládacího prvku DataGrid.

V DataGrid lze najednou zobrazit pouze jednu tabulku. Pokud je mezi tabulkami definována relace nadřazený-podřízený, může uživatel přecházet mezi souvisejícími tabulkami a vybrat tabulku, která se má zobrazit v ovládacím prvku DataGrid. Informace o vazbě ovládacího prvku DataGrid ke zdroji dat ADO.NET v době návrhu nebo spuštění naleznete v tématu Postupy: Vytvoření vazby ovládacího prvku Windows Forms DataGrid ke zdroji dat.

Mezi platné zdroje dat pro DataGrid patří:

Pokud je zdrojem datová sada, může být datová sada objektem ve formuláři nebo objektem předaným do formuláře webovou službou XML. Můžete vázat na typové nebo netypované datové sady.

Můžete také svázat ovládací prvek DataGrid s dalšími strukturami, pokud objekty ve struktuře, například prvky v poli, vystavují veřejné vlastnosti. Mřížka zobrazí všechny veřejné vlastnosti prvků ve struktuře. Pokud například svážete ovládací prvek DataGrid s polem objektů zákazníka, mřížka zobrazí všechny veřejné vlastnosti těchto objektů zákazníka. V některých případech to znamená, že i když můžete vytvořit vazbu se strukturou, výsledná vázaná struktura nemusí mít praktickou aplikaci. Můžete například vytvořit vazbu na pole celých čísel, ale protože datový typ Integer nepodporuje veřejnou vlastnost, mřížka nemůže zobrazit žádná data.

Můžete se svázat s následujícími strukturami, pokud jejich prvky zpřístupňují veřejné vlastnosti.

  • Jakákoli komponenta, která implementuje rozhraní IList. To zahrnuje pole s jednou dimenzí.

  • Jakákoli komponenta, která implementuje rozhraní IListSource.

  • Jakákoli komponenta, která implementuje rozhraní IBindingList.

Další informace o možných zdrojích dat naleznete v tématu Zdroje dat podporované modelem Windows Forms.

Zobrazení mřížky

Běžným použitím ovládacího prvku DataGrid je zobrazení jedné tabulky dat z datové sady. Ovládací prvek se ale dá použít také k zobrazení více tabulek, včetně souvisejících tabulek. Zobrazení mřížky se automaticky upraví podle zdroje dat. Následující tabulka ukazuje, co se zobrazuje pro různé konfigurace.

Obsah datové sady Co se zobrazí
Jedna tabulka. Tabulka se zobrazí v mřížce.
Více tabulek. Mřížka může zobrazit stromové zobrazení, ve kterém můžou uživatelé přejít a vyhledat tabulku, kterou chtějí zobrazit.
Více souvisejících tabulek. Mřížka může zobrazit stromové zobrazení pro výběr tabulek nebo můžete určit, že mřížka zobrazuje nadřazenou tabulku. Záznamy v nadřazené tabulce umožňují uživatelům přecházet k souvisejícím podřízeným řádkům.

Poznámka:

Tabulky v datové sadě souvisejí pomocí DataRelation. Viz také Vytvoření relací mezi datovými sadami.

Když ovládací prvek DataGrid zobrazuje tabulku a vlastnost AllowSorting je nastavena na true, data lze použít kliknutím na záhlaví sloupců. Uživatel může také přidávat řádky a upravovat buňky.

Relace mezi sadou tabulek se uživatelům zobrazují pomocí nadřazené/podřízené navigační struktury. Nadřazené tabulky představují nejvyšší úroveň dat, zatímco podřízené tabulky jsou odvozeny z jednotlivých položek v nadřazených tabulkách. Expandéry se zobrazují v každém nadřazeném řádku, který obsahuje podřízenou tabulku. Kliknutím na rozbalovací prvek vygenerujete seznam webových odkazů na podřízené tabulky. Uživateli se po výběru odkazu zobrazí podřízená tabulka. Kliknutím na ikonu zobrazit nebo skrýt nadřazené řádky (Zobrazit nebo skrýt ikonu nadřazených řádků) skryje informace o nadřazené tabulce nebo ji znovu zobrazí, pokud ho uživatel předtím skryl. Uživatel může kliknout na tlačítko Zpět a přejít zpět na dříve zobrazenou tabulku.

Sloupce a řádky

DataGrid se skládá z kolekce DataGridTableStyle objektů obsažených ve vlastnosti DataGrid ovládacího prvku TableStyles. Styl tabulky může obsahovat kolekci DataGridColumnStyle objektů, které jsou obsaženy ve vlastnosti GridColumnStyles objektu DataGridTableStyle. Vlastnosti TableStyles a GridColumnStyles můžete upravit pomocí editorů kolekcí, k nimž se přistupuje prostřednictvím okna Vlastnosti .

Ke všem prvkům DataGridTableStyle přidruženým k ovládacímu prvku DataGrid lze přistupovat skrze GridTableStylesCollection. GridTableStylesCollection lze upravit v návrháři pomocí editoru kolekce DataGridTableStyle nebo programově přes vlastnost DataGrid ovládacího prvku TableStyles.

Následující obrázek znázorňuje objekty zahrnuté v ovládacím prvku DataGrid:

Diagram znázorňující objekty zahrnuté do ovládacího prvku DataGrid

Styly tabulek a styly sloupců se synchronizují s objekty DataTable a DataColumn objekty nastavením jejich MappingName vlastností na odpovídající TableName a ColumnName vlastnosti. Pokud DataGridTableStyle, který nemá žádné styly sloupců, se přidá do ovládacího prvku DataGrid vázaného na platný zdroj dat a MappingName vlastnost tohoto stylu tabulky je nastavena na platnou vlastnost TableName, vytvoří se pro tento styl tabulky kolekce DataGridColumnStyle objektů. Pro každý DataColumn nalezený v kolekci Columns pro DataTablese do DataGridColumnStylepřidá odpovídající GridColumnStylesCollection. Prostřednictvím vlastnosti GridColumnStylesCollectionGridColumnStylesse přistupuje k DataGridTableStyle. Sloupce lze přidat nebo odstranit z mřížky pomocí Add nebo Remove metody v GridColumnStylesCollection. Další informace naleznete v tématu Postupy: Přidání tabulek a sloupců do ovládacího prvku Windows Forms DataGrid a Postupy: Odstranění nebo skrytí sloupců v ovládacím prvku Windows Forms DataGrid.

Kolekce typů sloupců rozšiřuje třídu DataGridColumnStyle o bohaté možnosti formátování a úprav. Všechny typy sloupců dědí ze základní třídy DataGridColumnStyle. Vytvořená třída závisí na vlastnosti DataTypeDataColumn, na níž je DataGridColumn založen. Například DataColumn, která má vlastnost DataType nastavenou na Boolean, bude přidružena k DataGridBoolColumn. Následující tabulka popisuje každý z těchto typů sloupců.

Typ sloupce Popis
DataGridTextBoxColumn Přijímá a zobrazuje data jako formátované nebo neformátované řetězce. Možnosti úprav jsou stejné jako pro úpravy dat v jednoduchém TextBox. Dědí z DataGridColumnStyle.
DataGridBoolColumn Přijímá a zobrazuje hodnoty true, falsea null. Dědí z DataGridColumnStyle.

Poklikáním na pravý okraj sloupce změníte velikost sloupce tak, aby se zobrazil celý titulek a nejširší položka.

Styly tabulek a styly sloupců

Jakmile vytvoříte výchozí formát ovládacího prvku DataGrid, můžete přizpůsobit barvy, které se použijí při zobrazení určitých tabulek v datové mřížce.

Toho dosáhnete vytvořením instancí DataGridTableStyle třídy. Styly tabulky určují formátování konkrétních tabulek, které se liší od výchozího formátování samotného ovládacího prvku DataGrid. Každá tabulka může mít vždy definovaný jenom jeden styl tabulky.

Někdy budete chtít mít konkrétní sloupec jiný než zbytek sloupců konkrétní tabulky dat. Vlastní sadu stylů sloupců můžete vytvořit pomocí vlastnosti GridColumnStyles.

Styly sloupců souvisejí se sloupci v datové sadě stejně jako styly tabulek souvisejících s tabulkami dat. Stejně jako každá tabulka může mít najednou definovaný jenom jeden styl tabulky, takže každý sloupec má definovaný jenom jeden styl sloupce, a to v konkrétním stylu tabulky. Tato relace je definována ve vlastnosti MappingName sloupce.

Pokud jste vytvořili styl tabulky bez přidání stylů sloupců, Visual Studio přidá výchozí styly sloupců při vytváření formuláře a mřížky za běhu. Pokud jste ale vytvořili styl tabulky a přidali do ní styly sloupců, Visual Studio nevytvoří žádné styly sloupců. Budete také muset definovat styly sloupců a přiřadit jim název mapování, aby se ve mřížce zobrazily sloupce, které chcete.

Vzhledem k tomu, že určíte, které sloupce jsou součástí datové mřížky, přiřazením stylu sloupce a ke sloupcům není přiřazen žádný styl sloupce, můžete do datové sady zahrnout sloupce dat, které se nezobrazují v mřížce. Vzhledem k tomu, že datový sloupec je součástí datové sady, můžete data, která se nezobrazují, programově upravit.

Poznámka:

Obecně platí, že před přidáním stylů tabulky do kolekce stylů tabulky vytvořte styly sloupců a přidejte je do kolekce stylů sloupců. Když do kolekce přidáte prázdný styl tabulky, styly sloupců se automaticky vygenerují za vás. V důsledku toho bude vyvolána výjimka, pokud se pokusíte přidat nové styly sloupců s duplicitními hodnotami MappingName do kolekce stylů sloupců.

Někdy budete chtít jen upravit jeden sloupec mezi mnoha sloupci; Například datová sada obsahuje 50 sloupců a vy jich chcete jenom 49. V tomto případě je jednodušší importovat všech 50 sloupců a programově odebrat jeden sloupec, nikoli programově přidávat každý z 49 jednotlivých sloupců, které chcete.

Formátování

Formátování, které lze použít u ovládacího prvku DataGrid, zahrnuje styly ohraničení, styly mřížky, písma, vlastnosti titulku, zarovnání dat a střídavou barvu pozadí mezi řádky. Další informace naleznete v tématu Postupy: Formátování ovládacího prvku Windows Forms DataGrid.

Události

Kromě běžných řídicích událostí, jako jsou MouseDown, Entera Scroll, ovládací prvek DataGrid podporuje události spojené s úpravami a navigacemi v mřížce. Vlastnost CurrentCell určuje, která buňka je vybrána. Událost CurrentCellChanged se vyvolá, když uživatel přejde na novou buňku. Když uživatel přejde do nové tabulky prostřednictvím relací nadřazenosti/podřízenosti, vyvolá se událost Navigate. Událost BackButtonClick se vyvolá, když uživatel při prohlížení podřízené tabulky klikne na tlačítko Zpět, a událost ShowParentDetailsButtonClick se vyvolá při kliknutí na ikonu pro zobrazení nebo skrytí nadřazených řádků.

Viz také