Virtuální režim v ovládacím prvku Windows Forms DataGridView

Pomocí virtuálního režimu můžete spravovat interakci mezi ovládacím DataGridView prvku a vlastní mezipamětí dat. Chcete-li implementovat virtuální režim, nastavte VirtualMode vlastnost na true a zpracovat jednu nebo více událostí popsaných v tomto tématu. Obvykle budete zpracovávat aspoň CellValueNeeded událost, která umožňuje ovládacímu prvku vyhledat hodnoty v mezipaměti dat.

Vázaný režim a virtuální režim

Virtuální režim je nutný pouze v případě, že potřebujete doplnit nebo nahradit vázaný režim. V vázaném DataSource režimu nastavíte vlastnost a ovládací prvek automaticky načte data ze zadaného zdroje a odešle změny uživatele zpět do něj. Můžete určit, které vázané sloupce se zobrazí, a samotný zdroj dat obvykle zpracovává operace, jako je řazení.

Doplňkový vázaný režim

Režim vazby můžete doplnit zobrazením nevázaných sloupců spolu s vázanými sloupci. Někdy se tomu říká "smíšený režim" a je užitečný pro zobrazení věcí, jako jsou počítané hodnoty nebo ovládací prvky uživatelského rozhraní .

Vzhledem k tomu, že nevázané sloupce jsou mimo zdroj dat, jsou ignorovány operacemi řazení zdroje dat. Proto když povolíte řazení ve smíšeném režimu, musíte spravovat nevázaná data v místní mezipaměti a implementovat virtuální režim, aby ovládací DataGridView prvek s ním mohl pracovat.

Další informace o použití virtuálního režimu k udržování hodnot v nevázaných sloupcích najdete v příkladech v DataGridViewCheckBoxColumn.ThreeState referenčních tématech vlastností a System.Windows.Forms.DataGridViewComboBoxColumn tříd.

Nahrazení vázaného režimu

Pokud režim vazby nesplňuje vaše požadavky na výkon, můžete spravovat všechna data ve vlastní mezipaměti prostřednictvím obslužných rutin událostí virtuálního režimu. Virtuální režim můžete například použít k implementaci mechanismu načítání dat za běhu, který načítá pouze tolik dat ze sítě, kolik je nezbytné pro optimální výkon. Tento scénář je užitečný zejména při práci s velkými objemy dat přes pomalé síťové připojení nebo s klientskými počítači, které mají omezenou velikost paměti RAM nebo úložného prostoru.

Další informace o použití virtuálního režimu ve scénáři za běhu naleznete v tématu Implementace virtuálního režimu s načítáním dat za běhu v ovládacím prvku model Windows Forms DataGridView.

Události virtuálního režimu

Pokud jsou vaše data určená jen pro čtení, může to být jediná událost, CellValueNeeded kterou budete muset zpracovat. Další události virtuálního režimu umožňují povolit konkrétní funkce, jako jsou úpravy uživatelů, přidávání řádků a odstraňování a transakce na úrovni řádků.

Některé standardní DataGridView události (například události, ke kterým dochází, když uživatelé přidávají nebo odstraňují řádky nebo když jsou hodnoty buněk upravovány, analyzovány, ověřeny nebo formátovány) jsou užitečné i ve virtuálním režimu. Můžete také zpracovat události, které umožňují udržovat hodnoty, které nejsou obvykle uloženy ve vázaném zdroji dat, jako je text popisu buňky, text chyby buňky a řádku, data místní nabídky buňky a řádku a data výšky řádku.

Další informace o implementaci virtuálního režimu pro správu dat pro čtení a zápis s oborem potvrzení na úrovni řádků najdete v tématu Návod: Implementace virtuálního režimu v ovládacím prvku model Windows Forms DataGridView.

Příklad, který implementuje virtuální režim s oborem potvrzení na úrovni buňky, naleznete v tématu s referenčními informacemi o VirtualMode vlastnosti.

K následujícím událostem dochází pouze v případě, VirtualMode že je vlastnost nastavena na truehodnotu .

Událost Popis
CellValueNeeded Ovládací prvek slouží k načtení hodnoty buňky z mezipaměti dat pro zobrazení. K této události dochází pouze u buněk v nevázaných sloupcích.
CellValuePushed Ovládací prvek slouží k potvrzení vstupu uživatele pro buňku do mezipaměti dat. K této události dochází pouze u buněk v nevázaných sloupcích.

UpdateCellValue Volání metody při změně hodnoty uložené v mezipaměti mimo obslužnou rutinu CellValuePushed události, aby se zajistilo, že aktuální hodnota je zobrazena v ovládacím prvku a použít všechny režimy automatické velikosti aktuálně platné.
NewRowNeeded Tento ovládací prvek slouží k označení potřeby nového řádku v mezipaměti dat.
RowDirtyStateNeeded Ovládací prvek slouží k určení, jestli má řádek nějaké nepotvrzené změny.
CancelRowEdit Tento ovládací prvek slouží k označení, že se řádek má vrátit k hodnotám uloženým v mezipaměti.

Následující události jsou užitečné ve virtuálním režimu, ale lze je použít bez VirtualMode ohledu na nastavení vlastnosti.

Události Popis
UserDeletingRow

UserDeletedRow

RowsRemoved

RowsAdded
Ovládací prvek slouží k označení, kdy jsou řádky odstraněny nebo přidány, což vám umožní odpovídajícím způsobem aktualizovat mezipaměť dat.
CellFormatting

CellParsing

CellValidating

CellValidated

RowValidating

RowValidated
Tento ovládací prvek slouží k formátování hodnot buněk pro zobrazení a k analýze a ověření uživatelského vstupu.
CellToolTipTextNeeded Tento ovládací prvek slouží k načtení textu popisu buňky, pokud DataSource je vlastnost nastavena VirtualMode nebo je truevlastnost .

Nástroj buňky Tipy se zobrazí pouze v případech, kdy ShowCellToolTips je truehodnota vlastnosti .
CellErrorTextNeeded

RowErrorTextNeeded
Tento ovládací prvek používá k načtení chybového textu buňky nebo řádku, pokud DataSource je vlastnost nastavena VirtualMode nebo je truevlastnost .

UpdateCellErrorText Volání metody nebo UpdateRowErrorText metody při změně textu chyby buňky nebo řádku, aby se zajistilo, že aktuální hodnota je zobrazena v ovládacím prvku.

Glyfy buněk a řádků se zobrazí, když ShowCellErrorsShowRowErrors jsou truehodnoty vlastností .
CellContextMenuStripNeeded

RowContextMenuStripNeeded
Používá ovládací prvek k načtení buňky nebo řádku ContextMenuStrip , pokud je vlastnost ovládacího prvku DataSource nastavena VirtualMode nebo je truevlastnost .
RowHeightInfoNeeded

RowHeightInfoPushed
Používá se ovládacím prvku k načtení nebo uložení informací o výšce řádku v mezipaměti dat. Volejte metodu UpdateRowHeightInfo při změně informací o výšce řádku v mezipaměti mimo obslužnou rutinu RowHeightInfoPushed události, aby se zajistilo, že se aktuální hodnota použije v zobrazení ovládacího prvku.

Osvědčené postupy ve virtuálním režimu

Pokud implementujete virtuální režim, abyste mohli efektivně pracovat s velkými objemy dat, budete také chtít zajistit efektivní práci se samotným ovládacím DataGridView prvku. Další informace o efektivním používání stylů buněk, automatické velikosti, výběru a sdílení řádků najdete v tématu Osvědčené postupy pro škálování ovládacího prvku model Windows Forms DataGridView.

Viz také