Sdílet prostřednictvím


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ňování vázaného režimu

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 just-In-Time načítání dat v ovládacím prvku Windows Forms DataGridView.

události Virtual-Mode

Pokud jsou vaše data určená jen pro čtení, událost CellValueNeeded může být jediná, 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ů naleznete v tématu Návod: Implementace virtuálního režimu v ovládacím prvku 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ě, že je vlastnost VirtualMode nastavena na true.

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 se používá k potvrzení uživatelského vstupu pro buňku do mezipaměti dat. K této události dochází pouze u buněk v nevázaných sloupcích.

Zavolejte metodu UpdateCellValue, když změníte hodnotu uloženou v mezipaměti mimo obslužnou rutinu události CellValuePushed, aby se zajistilo zobrazení aktuální hodnoty v ovládacím prvku a automatické aplikování všech aktuálně platných režimů velikosti.
NewRowNeeded Tento ovládací prvek slouží k označení potřeby nového řádku v mezipaměti dat.
RowDirtyStateNeeded Používá se ovládacím prvkem k určení, zda má řádek nějaké neodeslané 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 nástroje popisu buňky, pokud je vlastnost DataSource nastavena na VirtualMode nebo je vlastnost true.

Popisy buněk jsou zobrazeny pouze tehdy, když je hodnota vlastnosti ShowCellToolTipstrue.
CellErrorTextNeeded

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

Zavolejte metodu UpdateCellErrorText nebo metodu UpdateRowErrorText při změně textu chyby buňky nebo řádku, abyste zajistili, že aktuální hodnota je zobrazena v ovládacím prvku.

Ikony chyb buněk a řádků se zobrazí, když hodnoty vlastností ShowCellErrors a ShowRowErrors jsou true.
CellContextMenuStripNeeded

RowContextMenuStripNeeded
Používá se ovládacím prvkem k načtení buňky nebo řádku ContextMenuStrip, když je vlastnost DataSource ovládacího prvku nastavena nebo když je vlastnost VirtualModetrue.
RowHeightInfoNeeded

RowHeightInfoPushed
Ovládací prvek se používá k načtení nebo uložení informací o výšce řádku v datové mezipaměti. 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ěrů a sdílení řádků naleznete v tématu Osvědčené postupy pro škálování ovládacího prvku Windows Forms DataGridView.

Viz také